Jackson JSON lib如何指定要反序列化的元素的开始

时间:2011-06-09 19:32:43

标签: jackson

我正在使用jackson反序列化json数据。我使用objectmapper来反序列化数据,并希望使用mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

忽略未知属性

杰克逊有没有办法指定我要反序列化的元素的开头?我的JSON数据中有更多的元素,但我只对一些要反序列化的元素感兴趣。

2 个答案:

答案 0 :(得分: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 :(得分:0)

JAXB支持XPath表达式,通过@XmlPath(...)将元素映射到类。

不确定是否可以跳过根元素,但对于嵌套,您可以使用@XmlPath(".")内联属性。

不确定Jackson是否支持,但EclipeLink JAXB确实支持。