我已成功使用 Spring & Jackson,如下所示,
ResponseEntity<MyClass> result = restTemplate.exchange(
MYURL, HttpMethod.POST, entity,
MyClass.class);
这里 MyClass 是一个 POJO,其中有一个与 JSON 中的每个字段映射的字段。
而且我还可以映射有许多 JSON“对象”的情况
ResponseEntity<MyClass[]> responseEntity = restTemplate.getForEntity(MYURL, MyClass[].class);
这解析了一个简单的对象数组并且运行良好。
但现在我的处境更加复杂。我有一个像这样的 JSON。
{
"id": "1998",
"items": {
"1": {
"map": {
"1": "1.2",
"2": "2.5",
"3": "6.1",
"4": "5.4",
"5": "9.7",
"6": "4.23",
"7": "7.65",
"8": "1.1",
"9": "8.5",
"10": "6.2"
}
}
}
}
在“items”数组中,您可以将其他项目设置为“2”或“3”。它们每个都包含不同的“ map ”。我不想将这些信息映射到对象中。
显然上面的数组方法不起作用,因为那里有一个属性“id”。
如何为此设计 POJO?我需要为此编写一个自定义反序列化器吗?
最佳答案
具有属性的 ResponseObject:
Long id;
Set<Item> items = new HashSet<Item>();
其中 Item 对象可能是:
Long id;
Map<String, String> mapItems = new HashMap<String, String>();
关于java - 当存在带有集合的属性时反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29647946/