2017-09-04 23 views
0

我是杰克逊主题中的新人,我没有找到任何可以帮助我解决问题的答案。在实体中使用根名称作为属性

对于秒让我们假设我有这个类:

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”不匹配,期望(“JsonNode” )类型[简单类型,类com.fasterxml.jackson.databind.JsonNode]

回答

0

你需要把root name暗示杰克逊

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

启用DeserializationFeature.UNWRAP_ROOT_VALUE它必须工作

+0

但队友的问题是,这个值是每条记录不同: 'XXX', 'XYZ', 'ABZ' – Silwest

+0

我的意思是'XXX'值(sis根名称)应该转到类的'name'部分。 – Silwest

相关问题