Heim > Java > javaLernprogramm > Wie gehe ich mit „Unrecognized Field'-Fehlern um, wenn ich JSON mit Jackson deserialisiere?

Wie gehe ich mit „Unrecognized Field'-Fehlern um, wenn ich JSON mit Jackson deserialisiere?

Mary-Kate Olsen
Freigeben: 2024-11-17 07:34:03
Original
392 Leute haben es durchsucht

How to Handle

Jackson mit JSON: Beheben des Fehlers „Unerkanntes Feld“

Beim Konvertieren einer JSON-Zeichenfolge in ein Java-Objekt mit Jackson kann es vorkommen, dass Fehler „Unerkanntes Feld, nicht als ignorierbar markiert“, wenn im JSON nicht erkannte Felder vorhanden sind. Um dieses Problem zu lösen, bietet Jackson zwei Optionen:

JsonIgnoreProperties-Annotation

Mit der @JsonIgnoreProperties-Annotation können Sie bestimmte Felder im POJO während der Deserialisierung ignorieren. In Ihrem Fall können Sie beispielsweise das Feld „Wrapper“ ignorieren:

@JsonIgnoreProperties(ignoreUnknown = true)
class Wrapper { ... }
Nach dem Login kopieren

Dadurch werden alle nicht erkannten Eigenschaften ignoriert, einschließlich „Wrapper“.

Benutzerdefinierter Deserializer

Wenn Sie eine detailliertere Kontrolle über die ignorierten Eigenschaften benötigen, können Sie einen benutzerdefinierten Deserialisierer erstellen. Überschreiben Sie die Deserialisierungsmethode, um die nicht erkannten Felder zu verarbeiten:

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;
    }
}
Nach dem Login kopieren

Registrieren Sie dann den benutzerdefinierten Deserialisierer bei Jackson:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit „Unrecognized Field'-Fehlern um, wenn ich JSON mit Jackson deserialisiere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage