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

xwbd5t1u  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(318)

我是Jackson的新手,我没有找到任何能帮助我解决问题的答案。
让我们假设我有一个类:

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

我的json如下所示:

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

我想强迫Jackson 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:根名称“”与类型[simple type,class com.fasterxml.jackson.databind.jsonnode]的预期(“jsonnode”)不匹配

acruukt9

acruukt91#

你需要放 root name 给Jackson的暗示

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

启用时 DeserializationFeature.UNWRAP_ROOT_VALUE 一定有用

相关问题