Java 使用Jackson库序列化JSON的正确POJO
因此,问题是如何正确地为JSON构建POJO,如下所示:Java 使用Jackson库序列化JSON的正确POJO,java,android,json,jackson,google-http-client,Java,Android,Json,Jackson,Google Http Client,因此,问题是如何正确地为JSON构建POJO,如下所示: {"1":{ "value_1":"something", "value_2":"something else"}, "2": { "value_1":"something", "value_2":"something else"}, "3": { "value_1":"something", "value_2":"something else"},
{"1":{
"value_1":"something",
"value_2":"something else"},
"2": {
"value_1":"something",
"value_2":"something else"},
"3": {
"value_1":"something",
"value_2":"something else"},
...
"999": {
"value_1":"something",
"value_2":"something else"}}
[{“id”: 1, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
{“id”: 2, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
{“id”: 3, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
…
{“id”: 999, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]}]
问题是,我无法如中所示解析JSON,因为保存我所需数据的数组有许多不同的名称。我建议将JSON调整为如下所示:
{"1":{
"value_1":"something",
"value_2":"something else"},
"2": {
"value_1":"something",
"value_2":"something else"},
"3": {
"value_1":"something",
"value_2":"something else"},
...
"999": {
"value_1":"something",
"value_2":"something else"}}
[{“id”: 1, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
{“id”: 2, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
{“id”: 3, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]},
…
{“id”: 999, “values”: [{“value”: 1, “text”: “something”}, {“value”: 2, “text”: “something else”}]}]
您可以尝试这样解析(大量代码)
公共类ParseTo{
私有映射未知=新HashMap();
@JsonAnyGetter
公共地图获取(){
返回未知;
}
@JSONANYSETER
公共无效集(字符串键、对象值){
if(映射的值实例){
Map m=(Map)值;
未知.put(key,newinnerParse(m));
}
}
}
公共类内部解析{
私有静态最终字符串V1_PROPERTY=“value_1”;
私有静态最终字符串V2_PROPERTY=“value_2”;
公共内部解析(映射){
this.value1=map.get(V1_属性);
this.value2=map.get(V2_属性);
}
私有字符串值1;
私有字符串值2;
公共字符串getValue1(){
返回值1;
}
public void setValue1(字符串值1){
此值为1.value1=value1;
}
公共字符串getValue2(){
返回值2;
}
public void setValue2(字符串值2){
此参数为0.value2=value2;
}
}
公共班机{
公共静态void main(字符串[]args){
字符串jsonString=“{\'1\”:{\n+
“\“值\u 1\”:\“某物”,\n”+
“\“值\u 2\:\”其他\“},\n”+
“\'2\':{\n”+
“\“值\u 1\”:\“某物”,\n”+
“\“值\u 2\”:\“其他内容\”}”+
"}";
试一试{
ParseTo parsed=new ObjectMapper().readValue(jsonString,ParseTo.class);
已解析的.get().entrySet().stream()
.forEach(条目->{
System.out.println(“键:+entry.getKey()+”,值:(“+
内部值1:“+entry.getValue().getValue1()+”+
“内部值2:”+entry.getValue().getValue2()+
")");
});
}捕获(例外e){
e、 printStackTrace();
}
}
}
依赖项:
com.fasterxml.jackson.core jackson core
com.fasterxml.jackson.core jackson注释
com.fasterxml.jackson.core jackson databind每个元素后面的json中是否都有逗号,还是与您在问题中所显示的一样?因为您向我们展示了无效的JSON,所以我不能调整JSON,因为我是从一个对它没有影响的api获取JSON的=(