如何將 JsonNode 轉換為 ObjectNode
一、簡介
在 Java 中使用 JSON(JavaScript 物件表示法)通常涉及使用 Jackson 等函式庫,它提供了各種類別來表示此類數據,例如JsonNodе
和ObjеctNodе
。
在本教學中,我們將**探索JsonNodе
ObjеctNodе
** Java中將 JsonNode 轉換為 ObjectNode 。當我們需要直接在程式碼中操作資料時,這是必要的步驟。
2. 理解JsonNodе
和ObjеctNodе
JsonNode
是 Jackson 函式庫中的一個抽象類,表示 JSON 樹中的節點。它是所有節點的基類,能夠儲存不同類型的數據,包括物件、陣列、字串、數字、布林值和空值。 JsonNode
實例是不可變的,這表示您無法在它們上設定屬性。
ObjectNode
可以定義為JsonNode
的可變子類,專門表示物件節點。它允許透過提供在物件內新增、刪除和修改鍵值對的方法來操作這些類型的物件。除了操作方法之外, ObjectNode
還提供了方便的存取器,例如asInt
、 asText
和asBoolean,
以便輕鬆地從物件節點檢索對應的資料類型。
3. 導入傑克遜
Jackson 函式庫提供了廣泛的功能來有效率地讀取、寫入和操作 JSON 資料。
在與 Jackson 合作之前,有必要在我們專案的pom.xml
中加入必要的依賴項:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.15.2</version>
</dependency>
4. 執行轉換
假設我們定義一個簡單的 JSON 物件:
{
"name":"John",
"gender":"male",
"company":"Baeldung",
"isEmployee": true,
"age": 30
}
我們將在程式碼中將其聲明為String
值:
public static String jsonString = "{\"name\": \"John\", \"gender\": \"male\", \"company\": \"Baeldung\", \"isEmployee\": true, \"age\": 30}";
讓我們先利用 Jackon 的ObjеctMappеr
類,使用ObjectMapper.readTree()
方法將此字串轉換為JsonNodе
。之後,讓我們建立一個ObjеctNodе
並使用ObjectMapper.createObjectNode().setAll()
方法用JsonNodе
中的欄位填入它:
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
ObjectNode objectNode = objectMapper.createObjectNode().setAll((ObjectNode) jsonNode);
最後,讓我們透過一系列斷言來執行驗證,以檢查從JsonNodе
轉換為ObjеctNodе
後資料的完整性:
assertEquals("John", objectNode.get("name").asText());
assertEquals("male", objectNode.get("gender").asText());
assertEquals("Baeldung", objectNode.get("company").asText());
assertTrue(objectNode.get("isEmployee").asBoolean());
assertEquals(30, objectNode.get("age").asInt());
5. 結論
使用 Jackson 函式庫時,將JsonNodе
轉換為ObjеctNodе
的過程在 JSON 資料導覽和互動中發揮關鍵作用。
在本文中,我們展示瞭如何透過 Jackson 的ObjectMapper
類別執行此轉換。
與往常一樣,隨附的源代碼可以在 GitHub 上找到。