我有一个任务要将Json解析为Java Class。
Jason片段我试图解析并遇到问题就像树结构一样。
这里的关键点是parameterValue
可能是字符串,或者是参数名称/值对的另一个数组;
我想使用Jackson mapper
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"
}]
}]
答案 0 :(得分:2)
你可以试试这个在线json到java pojo mapper,它产生了所需的结果,它对我来说很方便。
http://pojo.sodhanalibrary.com/
尝试一下,如果你遇到任何困难,提供你收到的完整的json,我们可以解决其他问题。
答案 1 :(得分:1)
创建一个POJO Response.java类,其中包含您的字段,getter / setter,创建标准构造函数和包含字段的构造函数,以及toString方法()。我给你看一个Annotations的例子
定义类如:
@JsonAutoDetect
@JsonSerialize
public class Response implements Serializable
然后你的字段
@JsonProperty
private String parameterName;
最后你的构造函数f.e.像这样
@JsonCreator
public Response(@JsonProperty("parameterName") String parameterName) {
this.parameterName = parameterName;
}
答案 2 :(得分:0)
我已将其定义为
private List<List<Object>> resultParameters;
然后jackson maper将它(Object)解析为LinkedHashMapEnty,当它是最终值时,或者解析为ArrayList - 如果它不是值而是另一个值List;
可以关闭;
答案 3 :(得分:0)
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个罐子: 杰克逊的注解 - 2.3.5.jar 杰克逊核心2.3.5.jar 杰克逊 - 数据绑定-2.3.5.jar