使用Jackson忽略JSON对象上的新字段
我使用Jackson JSON库将一些JSON对象转换为android应用程序上的POJO类。 问题是,JSON对象可能会更改,并且在应用程序发布时添加新的字段,但是当前,即使添加了简单的字符串字段,它也会中断,这可以安全地忽略。
有什么办法可以告诉杰克逊忽略新增的字段吗? (例如POJO对象上不存在)? 全球忽视会很好。
Jackson提供了一个可以在课堂上使用的注释(JsonIgnoreProperties)。
将以下内容添加到班级的顶部(而不是单个方法):
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
...
}
根据您使用的杰克逊版本,您将不得不在当前版本中使用不同的导入:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
在旧版本中它一直是:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
另外还有两个已经提到的机制,还有全局特征可以用来抑制由未知(未映射)属性引起的所有故障:
// jackson 1.9 and before
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// or jackson 2.0
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
这是没有注释时使用的默认值,可以是方便的回退。
杰克逊2最新的完整答案
使用注释
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyMappingClass {
}
请参阅Jackson在线文档上的JsonIgnoreProperties。
使用配置
比注解更少侵入。
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ObjectReader objectReader = objectMapper.reader(MyMappingClass.class);
MyMappingClass myMappingClass = objectReader.readValue(json);
请参阅Jackson在线文档上的FAIL_ON_UNKNOWN_PROPERTIES。
链接地址: http://www.djcxy.com/p/6453.html上一篇: Ignoring new fields on JSON objects using Jackson
下一篇: Is there any practical reason to use quoted strings for JSON keys?