【发布时间】:2016-09-15 00:08:53
【问题描述】:
需要使用 Jackson 反序列化如下所示的 JSON 结构,这是来自 REST API 的响应,我正在使用 Spring RestTemplate 和 MappingJackson2HttpMessageConverter 来解析它。
问题: 1. 所有元素都可以有一个或多个属于自己类型的子元素(例如,根有子元素:childABC & childAnyRandomName) 2.子节点没有标准的命名约定,名字可以是任意字符串。
{
"FooBar": {
"root": {
"name": "test1",
"value": "900",
"childABC": {
"name": "test2",
"value": "700",
"childXYZ": {
"name": "test3",
"value": "600"
}
},
"childAnyRandomName": {
"name": "test4",
"value": "300"
}
}
}
}
据我了解,存储它的 POJO 可能是这样的:
import java.util.Map;
public class TestObject {
private String name;
private String value;
private Map<String, TestObject> children;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Map<String, TestObject> getChildren() {
return children;
}
public void setChildren(Map<String, TestObject> children) {
this.children = children;
}
}
我无法控制我正在解析的实际 JSON,因此如果 Jackson 不起作用,我将不得不将其全部推送到 JsonNode 中并使用自定义逻辑构建此对象结构。
免责声明:我对 Jackson 比较陌生,所以请不要介意这是否是我没有阅读过的经典教科书解决方案,只需将我指向文档位置即可。
【问题讨论】:
标签: java json jackson deserialization resttemplate