Ich versuche, die Standard-Deserialisierung von Jackson zu erweitern, um den Feldern meines Domänenobjekts ein Platzhalterobjekt zuzuweisen, wenn sie im JSON explizit auf null gesetzt sind. Ich verwende Spring Boot + Spring Data. Ich habe viel nach dem besten Weg gesucht, um es zu tun, und ich glaube, dass ein kundenspezifischer Deserializer das ist, was ich will. Ich bin offen für Vorschläge dazu, aber meine eigentliche Frage ist, wie man die Standard-Deserialisierung verwendet und die expliziten Null-Zuweisungen selbst handhabt. Dies ist, wo ich bin stecken (in MyItemDeserializer):Verwenden Sie JsonParser erneut nach Deserialisierung
@Override
public Item deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException
{
Item item = (Item) defaultDeserializer.deserialize(jsonParser, deserializationContext);
JsonNode root = jsonParser.readValueAsTree();
// traverse the tree to handle {"something":null}
return item;
}
Offensichtlich nach dem Standard-Deserializer verarbeitet, um das Objekt jsonParser readValueAsTree
gibt null zurück. Gibt es eine Möglichkeit, den JSON nach der Standard-Deserialisierung als Baum (oder irgendetwas anderes) zu verwenden?
Ich kannte TreeTraversingParser nicht. Vielen Dank! –
Es ist Bit versteckt, und es könnte sinnvoll sein, es über eine Methode in 'JsonNode' oder etwas (" asParser() "oder so) zu offenbaren. – StaxMan