我成功使用了Spring&杰克逊如下,
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”。它们中的每一个都包含不同的“地图”。我不想将这些信息映射到一个对象中。
显然上面的数组方法不起作用,因为那里有属性“id”。
我如何为此设计POJO?我需要为此编写自定义反序列化器吗?
答案 0 :(得分:0)
具有属性的ResponseObject:
Long id;
Set<Item> items = new HashSet<Item>();
其中Item对象可以是:
Long id;
Map<String, String> mapItems = new HashMap<String, String>();