Jackson で JSON を逆シリアル化するときに「認識できないフィールド」エラーを処理する方法は?

Mary-Kate Olsen
リリース: 2024-11-17 07:34:03
オリジナル
311 人が閲覧しました

How to Handle

JSON を使用した Jackson: 「認識されないフィールド」エラーの解決

Jackson を使用して JSON 文字列を Java オブジェクトに変換すると、次のような問題が発生する可能性があります。 JSON に認識できないフィールドがある場合、エラー「認識できないフィールド。無視可能としてマークされていません」。この問題を解決するために、Jackson は 2 つのオプションを提供しています。

JsonIgnoreProperties 注釈

@JsonIgnoreProperties 注釈を使用すると、逆シリアル化中に POJO の特定のフィールドを無視できます。たとえば、あなたの場合、「wrapper」フィールドを無視できます:

@JsonIgnoreProperties(ignoreUnknown = true)
class Wrapper { ... }
ログイン後にコピー

これにより、「wrapper」を含む認識できないプロパティが無視されます。

Custom Deserializer

無視されるプロパティをより詳細に制御する必要がある場合は、カスタム デシリアライザーを作成できます。認識できないフィールドを処理するためにデシリアライズ メソッドをオーバーライドします:

public class CustomDeserializer extends JsonDeserializer<Wrapper> {
    @Override
    public Wrapper deserialize(JsonParser parser, DeserializationContext context) throws IOException {
        Wrapper wrapper = new Wrapper();
        ObjectCodec codec = parser.getCodec();
        JsonToken token = parser.getCurrentToken();
        while (token != JsonToken.END_ARRAY) {
            if (token == JsonToken.START_OBJECT) {
                Student student = codec.readValue(parser, Student.class);
                wrapper.getStudents().add(student);
            }
            token = parser.nextToken();
        }
        return wrapper;
    }
}
ログイン後にコピー

次に、カスタム デシリアライザーを Jackson に登録します:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
ログイン後にコピー

以上がJackson で JSON を逆シリアル化するときに「認識できないフィールド」エラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート