3

Enum クラス、ColorName は、ColorName json ファイルから jsonschema2pojo を使用して生成されます。そのため、デフォルトでは、Enum クラスには @JsonCreator で注釈が付けられた fromValue メソッドがデフォルトで含まれています。

@JsonCreator
public static ColorName fromValue(String value) {
    ColorName constant = constants.get(value);
    if (constant == null) {
        throw new IllegalArgumentException(value);
    } else {
        return constant;
    }
}

このクラスが json 文字列を Java オブジェクトにデシリアライズするために使用され、json で渡された新しい/間違った Enum 値がある場合、デシリアライズは次のIllegalArgumentException() エラーで失敗します。

ObjectMapper om = 新しい ObjectMapper(); om.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);

問題は、 @JsonCreator が常に尊重されているためと思われます。これをスキップするか、不明な列挙値を無視するようにデシリアライザーに指示する方法はありますか?

4

1 に答える 1

0

これは、 https://github.com/FasterXML/jackson-databind/pull/1642/filesの時点で、Jackson ライブラリ自体への変更によって修正されました。

https://github.com/FasterXML/jackson-databind/pull/1642によると、Jackson 2.8.9 にバックポートされているので、それにアップグレードしてみてください。

于 2019-08-13T07:59:06.913 に答える