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 サイトの他の関連記事を参照してください。