Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengendalikan Ralat 'Medan Tidak Diiktiraf' Apabila Menyahseri JSON dengan Jackson?

Mary-Kate Olsen
Lepaskan: 2024-11-17 07:34:03
asal
311 orang telah melayarinya

How to Handle

Jackson dengan JSON: Menyelesaikan Ralat "Unrecognized Field"

Apabila menukar rentetan JSON kepada objek Java menggunakan Jackson, anda mungkin menghadapi ralat "Medan tidak dikenali, tidak ditandakan sebagai tidak dikenali" jika terdapat medan tidak dikenali dalam JSON. Untuk menyelesaikan isu ini, Jackson menyediakan dua pilihan:

Anotasi JsonIgnoreProperties

Anotasi @JsonIgnoreProperties membolehkan anda mengabaikan medan tertentu dalam POJO semasa penyahserilan. Sebagai contoh, dalam kes anda, anda boleh mengabaikan medan "pembungkus":

@JsonIgnoreProperties(ignoreUnknown = true)
class Wrapper { ... }
Salin selepas log masuk

Ini akan mengabaikan sebarang sifat yang tidak dikenali, termasuk "pembungkus."

Penyahserialisasi Tersuai

Jika anda memerlukan kawalan yang lebih terperinci ke atas sifat yang diabaikan, anda boleh membuat deserializer tersuai. Gantikan kaedah penyahserikatan untuk mengendalikan medan yang tidak dikenali:

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;
    }
}
Salin selepas log masuk

Kemudian, daftarkan penyahserialisasi tersuai dengan Jackson:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat 'Medan Tidak Diiktiraf' Apabila Menyahseri JSON dengan Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan