使用 Jackson 忽略 JSON 对象上的新字段
我正在使用Jackson JSON库将一些JSON对象转换为Android应用程序上的POJO类。问题是,JSON 对象可能会在发布应用程序时更改并添加新字段,但目前,当添加简单的 String 字段时,它将中断,这可以安全地忽略。
有没有办法告诉杰克逊忽略新添加的字段?(例如,POJO对象上不存在)?全球忽视将是伟大的。
我正在使用Jackson JSON库将一些JSON对象转换为Android应用程序上的POJO类。问题是,JSON 对象可能会在发布应用程序时更改并添加新字段,但目前,当添加简单的 String 字段时,它将中断,这可以安全地忽略。
有没有办法告诉杰克逊忽略新添加的字段?(例如,POJO对象上不存在)?全球忽视将是伟大的。
Jackson 提供了一个可以在类级别使用的注释 (JsonIgnoreProperties)。
将以下内容添加到类的顶部(而不是单个方法):
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
...
}
根据您使用的 jackson 版本,您必须在当前版本中使用不同的导入,它是:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
在旧版本中,它是:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
除了已经提到的2种机制之外,还有一个全局功能可用于抑制由未知(未映射)属性引起的所有故障:
// 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);
这是在没有批注的情况下使用的默认值,可以方便地进行回退。