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