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!