2017-09-04 66 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

相關問題