2011-06-09 53 views
4

我正在使用jackson反序列化json數據。我正在使用objectmapper來反序列化數據,並希望忽略使用mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);Jackson JSON lib如何指定要反序列化的元素的開始

是否有方法在傑克遜指定我想要反序列化的元素的開始?我的JSON數據有更多的元素,但我只對一些元素進行反序列化。

回答

1

對象結構必須匹配JSON結構,因此如果需要的話,通常只使用包裝類是最方便的。喜歡的東西:

class Response { 
    public Thing value; 
} 
class Thing { 
    public String name; 
} 

所以即使你只是想「名」,你會做這樣的事情:

Response resp = mapper.readValue(jsonInput, Response.class); 
String name = response.value.name; 

如果是這樣,你可以省略定義屬性你不關心;或者定義它們而不使用。

+1

它不必與結構匹配。您可以忽略json中存在但未在類中存在的未知屬性:http://jackson.codehaus.org/1.6.3/javadoc/org/codehaus/jackson/annotate/JsonIgnoreProperties.html – Ghokun 2014-12-11 06:40:44

0

JAXB支持XPath表達式,通過@XmlPath(...)將元素映射到類。

不確定您是否可以跳過根元素,但是對於嵌套,您可以使用@XmlPath(".")使屬性內聯。

不確定是否傑克遜支持,但EclipeLink JAXB呢。

相關問題