3

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 つが更新されているという事実と関係があると思います。

4

1 に答える 1

1

このように ObjectMapper を構成することで問題を修正しました (ただし、これらがすべて必要かどうかはわかりません)。

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

必要なプロパティの Message クラスでは、次のようになります。

@JsonIgnoreセッター (Java オブジェクトに解析する場合は除外)
@JsonPropertyゲッター (JSON オブジェクトに解析する場合は含める)

于 2016-03-08T10:27:15.967 に答える