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
Mary-Kate OlsenOriginal
2024-11-17 07:34:03405Durchsuche

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 { ... }

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;
    }
}

Registrieren Sie dann den benutzerdefinierten Deserialisierer bei Jackson:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));

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!

Stellungnahme:
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