Java序列化具有不同名称的json属性

时间:2016-12-22 13:45:16

标签: java json jackson

我正在尝试使用Jackson将Map序列化为Java对象。我得到了几个不同的地图,其中一个看起来像下面(采用JSON格式)

{
  "MediaUrl1": "https://someValidUrl2",
  "ApiVersion": "v1",
  "MediaUrl0": "https://someValidUrl1",
  "ToZip": "",
  "FromCity": "xxxx",
  "To": "+1234567890",
  "FromZip": "123456",
  "ToCountry": "xxxx",
  "Body": "Testing more than one media item with message",
  "MediaContentType1": "image/jpeg",
  "MediaContentType0": "image/jpeg",
  "NumMedia": "2",
  "FromState": "xxxx"
}

是否有一种干净的方法来处理带有

等键的json属性
  "MediaUrl1": "https://someValidUrl2",
  "MediaUrl0": "https://someValidUrl1",
  "MediaContentType1": "image/jpeg",
  "MediaContentType0": "image/jpeg",

目前我有一个使用

生成的POJO
objectMapper.convertValue(inputMap, JavaObject.class))

我无法事先知道我得到了多少MediaContentType#,MediaUrl#属性。感谢。

2 个答案:

答案 0 :(得分:0)

您始终可以将json映射到Map<String, Object>

Map<String, Object> obj = new ObjectMapper().readValue(src, 
                     new  TypeReference<HashMap<String, Object>>() {});

地图可以轻松处理任何类型和数量的属性。

答案 1 :(得分:0)

我最终分别处理了mediaContentType和mediaUrls。感谢您的回答和评论。