[英]jackson json to Object parsing
我有一個任務要將Json解析為Java類。
我試圖解析和有問題的Json片段就像樹結構。
這里的關鍵點是parameterValue
可以是字符串,或者是參數名稱/值對的另一個數組;
我想用傑克遜映射器
Response response = mapper.readValue(jsonObjstring, Response.class);
這里的問題是我不知道如何在這里描述Response類,所以它可以由Jackson自動解析。 如果有可能的話。
JSON:
[{
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "apnRecord",
"parameterValue" : [{
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "name",
"parameterValue" : "value"
}, {
"parameterName" : "name",
"parameterValue" : "value"
}]
}]
你可以試試這個在線json到java pojo mapper,它產生了所需的結果,它對我來說很方便。
http://pojo.sodhanalibrary.com/
嘗試一下,如果你遇到任何困難提供你收到的完整的json,我們可以解決其他問題。
創建一個POJO Response.java類,其中包含您的字段,getter / setter,創建標准構造函數和包含字段的構造函數,以及toString方法()。 我給你看一個Annotations的例子
定義類如:
@JsonAutoDetect
@JsonSerialize
public class Response implements Serializable
然后你的領域
@JsonProperty
private String parameterName;
最后你的建設者喜歡這樣
@JsonCreator
public Response(@JsonProperty("parameterName") String parameterName) {
this.parameterName = parameterName;
}
我把它定義為
private List<List<Object>> resultParameters;
然后jackson maper將它(Object)解析為LinkedHashMapEnty,當它是最終值時,或者解析為ArrayList - 如果它不是值而是另一個值列表;
它可以關閉;
package test;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) {
String readJsonAsString = "[{\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n}, {\r\n \"parameterName\" : \"apnRecord\",\r\n \"parameterValue\" : [{\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }, {\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }, {\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }, {\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }, {\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }, {\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n }]\r\n}]";
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNodes = mapper.readTree(readJsonAsString.toString());
for (JsonNode jsonNode : jsonNodes) {
System.out.println(jsonNode.get("parameterName"));
}
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
首先需要將json轉換為字符串格式,然后通過ObjectMapper將其轉換為樹形結構。
為此你需要使用3個罐子:jackson-annotations-2.3.5.jar jackson-core-2.3.5.jar jackson-databind-2.3.5.jar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.