使用 Jackson – 將字符串轉換為 JsonNode 對象


概述

本快速指南的主要目的是如何使用 Jackson 2 來將一個字符串轉換為 JsonNode 對象。

JsonNode 定義在 com.fasterxml.jackson.databind.JsonNode 包中。

快速轉換

可以使用下面的代碼直接進行轉換。

轉換的方式也比較簡單,在定義好 ObjectMapper 對象后,直接使用這個對象的 readTree 方法將輸入的字符串轉換為 JsonNode 對象。

考察下面的代碼:

@Test public void whenParsingJsonStringIntoJsonNode_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = mapper.readTree(jsonString); assertNotNull(actualObj); } 

低級別的轉換

在有些情況下,你可能需要使用更加低級別的轉換,比如說在轉換的時候需要對一些輸出參數進行設置。

那么你就需要先配置 Parser 了。

與前面的快速轉換不同的是,在你 new 了一個新的 ObjectMapper 對象后,你需要從這個對象中獲得 Factory。

然后再創建一個 Parser,最后再調用 readTree 的方法。

請考察下面的代碼:

@Test public void givenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonFactory factory = mapper.getFactory(); JsonParser parser = factory.createParser(jsonString); JsonNode actualObj = mapper.readTree(parser); assertNotNull(actualObj); } 

JsonNode 的使用

當 JSON 字符串被處理成了 JsonNode 對象后,那我們可以使用 JSON Tree Model 來對轉換后的 JSON 對象進行操作。

例如下面的代碼,首先我們完成了字符串到 JSON 對象的轉換,然后轉換完成后,我們通過 K1 的對定義來獲得值。

@Test public void givenTheJsonNode_whenRetrievingDataFromId_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = mapper.readTree(jsonString); // When JsonNode jsonNode1 = actualObj.get("k1"); assertThat(jsonNode1.textValue(), equalTo("v1")); } 

結論

在使用 fasterxml 的 jackson 包對 Json 數據操作之前,首先需要做的事情就是將輸入的 String 或者文件或者不同的輸入流轉換為 JsonNode 對象。

后續的操作就是對 JsonNode 的對象進行操作了。

 

 

例如,上面我們的一個 JsonNode 對象是一個數組,那么我們可以對上面的數組中轉換后的對象進行遍歷。

 

https://www.ossez.com/t/jackson-jsonnode/13724


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM