2011-06-09 50 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呢。

相关问题