杰克逊嵌套地图反序列化

时间:2016-06-20 14:57:24

标签: java json jackson json-deserialization fasterxml

我要处理一个如下所示的复杂initial.json

{
  "id": "ID123",
  "mapJobProfiles": {
    "23": {
      "Cineca": {
        "large": {
          "cm": 8,
          "cr": 8,
          "mavg": 8.235,
          "mmax": 17.541,
          "nm": 65,
          "nr": 5,
          "ravg": 0.297,
          "rmax": 0.499,
          "sh1max": 0,
          "shtypmax": 20.141,
          "shtypavg": 14.721
        }
      }
    }
  }
}

它的类有2个属性:

private String id;
private JobProfilesMap mapJobProfiles;

JobProfilesMap是一个具有单一属性的POJO:
Map<String,Map<String, Map<String, JobProfile>>> mapJobProfile


我有一个附加约束,我要避免将“mapJobProfile”作为JobProfilesMap()的属性名称。
为了实现这一点,由于注释@jsonunwrapped不适用于Map,我已添加到JobProfilesMap:

`@JsonAnyGetter
public Map<String, Map<String, Map<String, JobProfile>>> getMapJobProfile(){
    return mapJobProfile;
}`

(通过仅测试JobProfilesMap反序列化正确工作)

但是我得到了

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "23" ... 
not marked as ignorable (one known property: "mapJobProfile"])

如果我尝试反序列化initial.json

如果我没有删除“mapJobProfile”属性名称,那么jackson正确处理整个initial.json的反序列化,是否可以实现删除属性并且不添加自定义反序列化器的相同结果?

0 个答案:

没有答案
相关问题