如何使用Jackson的ObjectMapper.readerForUpdating忽略某些字段

时间:2016-03-02 18:11:07

标签: java json serialization jackson objectmapper

我使用Jackson 2.7.0

在使用一些新值更新现有对象时,我试图忽略encodingType

ObjectMapper om = new ObjectMapper();
om.readerForUpdating(message).readValue(messageSubset);

message包含encodingType的值 messageSubset(JSON-string)不包含encodingType的条目(无键值)。

我尝试过的事情:

  • 对于ObjectMapper:
    • om.setSerializationInclusion(Include.NON_EMPTY);
  • 在邮件类上:
    • @JsonIgnoreProperties(ignoreUnknown = true)
    • @JsonIgnoreProperties(value = { "encodingType" })
    • @JsonInclude(Include.NON_EMPTY)
    • @JsonInclude(Include.NON_NULL)
  • 在场上和吸气/装置上:
    • @JsonInclude(Include.NON_EMPTY)
    • @JsonInclude(Include.NON_NULL)
    • @JsonIgnore
    • @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

以上工作没有!有帮助吗?
我想这与readerForUpdating有关,和/或其中一个正在更新。

1 个答案:

答案 0 :(得分:0)

我通过像这样配置ObjectMapper解决了这个问题(不确定这些是否都需要):

om.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); om.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);

在Message类中找到所需的属性:

setter上的

@JsonIgnore(解析为Java对象时将其排除)
getter上的@JsonProperty(解析为JSON对象时包含它)