我正在使用jackson反序列化json数据。我正在使用objectmapper来反序列化数据,并希望忽略使用mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Jackson JSON lib如何指定要反序列化的元素的开始
是否有方法在杰克逊指定我想要反序列化的元素的开始?我的JSON数据有更多的元素,但我只对一些元素进行反序列化。
我正在使用jackson反序列化json数据。我正在使用objectmapper来反序列化数据,并希望忽略使用mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Jackson JSON lib如何指定要反序列化的元素的开始
是否有方法在杰克逊指定我想要反序列化的元素的开始?我的JSON数据有更多的元素,但我只对一些元素进行反序列化。
对象结构必须匹配JSON结构,因此如果需要的话,通常只使用包装类是最方便的。喜欢的东西:
class Response {
public Thing value;
}
class Thing {
public String name;
}
所以即使你只是想“名”,你会做这样的事情:
Response resp = mapper.readValue(jsonInput, Response.class);
String name = response.value.name;
如果是这样,你可以省略定义属性你不关心;或者定义它们而不使用。
JAXB支持XPath表达式,通过@XmlPath(...)
将元素映射到类。
不确定您是否可以跳过根元素,但是对于嵌套,您可以使用@XmlPath(".")
使属性内联。
不确定是否杰克逊支持,但EclipeLink JAXB呢。
它不必与结构匹配。您可以忽略json中存在但未在类中存在的未知属性:http://jackson.codehaus.org/1.6.3/javadoc/org/codehaus/jackson/annotate/JsonIgnoreProperties.html – Ghokun 2014-12-11 06:40:44