1. 簡介
在Java中,使用JSON(JavaScript 對象表示法)通常涉及使用諸如Jackson之類的庫,該庫提供各種類來表示此類數據,例如JsonNode和ObjectNode。
在本教程中,我們將探索如何將JsonNode轉換為ObjectNode在Java中。這是一個必要的步驟,當我們需要在代碼中直接操縱數據時。
2. 理解 JsonNode 和 ObjеctNodе
JsonNode 是 Jackson 庫中的一個抽象類,代表 JSON 樹中的節點。它是所有節點的基類,能夠存儲不同類型的數據,包括對象、數組、字符串、數字、布爾值和 null 值。 JsonNode 實例是不可變的,這意味着你不能設置它們的屬性。
ObjеctNodе 可以定義為 JsonNode 的可變子類,專門代表對象節點。它通過提供方法來添加、刪除和修改對象中的鍵值對來允許對這些類型的對象進行操作。除了操作方法之外,ObjеctNodе 還提供方便的訪問器,如 asInt、asText 和 asBoolean,以便輕鬆從對象節點檢索相應的類型數據。
3. 導入 Jackson
Jackson 庫提供廣泛的功能,用於高效地讀取、寫入和操作 JSON 數據。
在與 Jackson 交互之前,務必在項目中的 pom.xml 中添加必要的依賴項:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.14.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}";
首先,我們利用Jackson的ObjectMappеr類,使用ObjectMapper.readTree()方法將這個字符串轉換為一個JsonNodе。
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
ObjectNode objectNode = (ObjectNode) jsonNode;
最後,我們通過一系列的斷言來驗證轉換後的數據的完整性,這些斷言檢查了從JsonNodе轉換為ObjectNodе後的數據。
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. 結論
將 JsonNode 轉換為 ObjectNode 的過程在利用 Jackson 庫時,對於導航和與 JSON 數據進行交互至關重要。
在本文中,我們展示瞭如何通過 Jackson 的 ObjectMapper 類執行此轉換。