Dies scheint, als sollte es ein ziemlich gelöstes/gut adressiertes Problem sein, aber ich finde nicht viele Hinweise darauf - in der Hoffnung, dass dies kein Betrogener ist.Deserialisieren von verschachtelten Objekten innerhalb der JSON-Antwort mit Jackson
Mein Szenario ist im Grunde, dass ich paginierte JSON Antworten bin raubend, die wie folgt aussehen:
{
"objects": [...],
"meta": {
"total": 5000,
"page": 1,
"result_pages": 20,
"links": {
"prev": null,
"next": "/api/v3/objects/somequery?page=2"
}
}
}
Offensichtlich ist dies vereinfacht, aber hoffentlich wird es den Punkt herüber.
Alles, was mich wirklich interessiert, sind die Felder objects
und next
, aber es sieht so aus, als müsste ich eine ganze Hierarchie von DTOs erstellen, um die verschachtelten Felder erfolgreich zu deserialisieren.
Gibt es eine Jackson Annotation, die mich das alles überspringen lassen würde? Wenn nicht, gibt es dafür eine Reihe von Best Practices, bei denen es nicht um eine Vielzahl meist leerer Klassen und Dateien geht?
Wäre es vielleicht einfacher sein, nur die oben genannten verwenden 'JsonDeserializer' mit einer Anmerkung auf eine 'String next' -Eigenschaft und einfach so tun, es ist flach, auf der gleichen root-Ebene wie' "objects" '? –
@ap, Sie können diese Anmerkung anders verwenden, auch an der Spitze der Klasse, hier die Dokumentation, https://fasterxml.github.io/jackson-databind/javadoc/2.3.0/com/fasterxml/jackson/databind /annotation/JsonDeserialize.html – SerCe
Für zukünftige Bewerber sollte ich erwähnen, dass die obige Antwort die '.asText()' Methode verwendet, die anscheinend falsch ist. Ich habe nach einiger Arbeit '.textValue()' benutzt und es funktioniert wie ein Zauber. –