所以我的问题是this answer的副产品。我有JSON
回复
{
"Key1": {...},
"Key2": {...}
}
我想把它映射到一个对象。由于我无法为100多个密钥创建包装器对象,因此我将其全部放在Map
中。
这个答案会很棒,但我没有使用GSON
并且很难用Spring RestTemplate
做同样的事情。当我想将它解析为具有对象的地图时:
Map<String, RequestObject> map = restTemplate.getForObject("https://example.com/request.json", Map.class);
我的RequestObject
改为LinkedHashMap
。因此map
成为Map<String, LinkedHashMap>
。这反过来似乎也持有更多LinkedHashMaps
。我是否需要更复杂的东西,比如写我自己的Jackson Deserializer?
修改
与this question (possible duplicate)不同,我不希望获得通用包装器。对象将始终相同,但密钥每次都会变化。如果它是如下:
{
"Sample":{
"Key":"2",
"Object":{
"Id":"0"
}
}
}
我可以将它映射到:
class Sample{
String key;
CustomObject object;
}
class CustomObject{
String id;
}
但是因为它具有以下形式:
{
"Key1":{
"Id":"0",
"Value":"X"
},
"Key2":{
"Id":"1",
"Value":"Y"
},
"Key3":{
"Id":"2",
"Value":"Z"
}
}
我不太确定如何将其映射到每个键所代表的对象的有用表示。 (此处为Id&amp; Value)。我无法想象需要为每个键创建一个类,因此将其转换为地图似乎是一个不错的主意。这不是this question描述的内容。