使用根名称作为实体中的属性

时间:2017-09-04 10:59:35

标签: java spring-boot jackson entity

我是杰克逊主题的新手,我没有找到任何可以帮助我解决问题的答案。

让我们假设我有这个课:

    public class Airport {
        private String name;
        private String code;
        ...
    }

我的json看起来像这样:

 "XXX": {
       "name": "SomeName",
  }

我想强迫杰克逊把XXX(树的根)放到班级的code财产中。我用来从JSON创建对象的标准方法是使用treeToValue

ObjectMapper mapper = new ObjectMapper();
String airports = "above Json";
JsonNode airportsTree = mapper.readTree(airports.toString());
Airport airport = mapper.treeToValue(airportsTree, Airport.class);

然而,当我启用DeserializationFeature.UNWRAP_ROOT_VALUE时,我正在

  

JsonMappingException:根名称'XXX'与类型[simple type,class com.fasterxml.jackson.databind.JsonNode]

的预期('JsonNode')不匹配

1 个答案:

答案 0 :(得分:0)

你需要为杰克逊提出root name提示

@JsonRootName(value = "XXX")
public class Airport {
    private String name;
    private String code;
    ...
}

启用DeserializationFeature.UNWRAP_ROOT_VALUE时,它必须正常工作