使用Spring RestTemplate将JSON映射到Map

时间:2016-03-31 20:00:08

标签: java json spring rest jackson

所以我的问题是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描述的内容。

0 个答案:

没有答案