2016-03-18 7 views
1

Ich möchte einen benutzerdefinierten JSON-Deserializer für mein Projekt schreiben. Ich möchte nicht das gesamte Dokument im Deserializer analysieren, sondern nur den Teil, auf dem ich den benutzerdefinierten Deserializer verwenden möchte.Wie benutzerdefinierte Jackson JsonDeserializer <T> Klasse für ein bestimmtes Objekt innerhalb JSON-Struktur verwenden?

Dies ist die JSON ich analysieren möchte: http://pastebin.com/mkHy0Gj6

Derzeit wenn ich versuche, eine benutzerdefinierte Deserializer zu verwenden, die alle das Dokument entlang geleitet wird, und ich habe manuell alles zu analysieren, möchte ich nur zu um dies für die Objekte innerhalb des Ereignisarrays zu tun. Wie kann ich das machen?

Hier ist meine aktuelle Implementierung: http://pastebin.com/dePz0QFJ

+1

Warum möchten Sie einen benutzerdefinierten Deserializer schreiben? Das scheint auf den ersten Blick leicht zu deserialisieren mit Datenbindung – beresfordt

+0

Ich kann den genauen JSON, mit dem ich arbeite, nicht posten, da es einige meiner Informationen dazu enthält, ich versuche etwas von der Steam API zu analysieren tatsächlich. Das ist die Struktur dessen, was ich über den Deserializer analysieren möchte. –

Antwort

0

Sie die Anmerkung

@JsonIgnoreProperties(ignoreUnknown = true)

Ihrem benutzerdefinierten Deserializer hinzufügen und es wird alles bis auf die Felder, die Sie deserialisieren wählen ignorieren.

+0

Das scheint nicht zu funktionieren, das ist, was ich bisher habe ... http://pastebin.com/dePz0QFJ Ich bekomme diesen Fehler: "com.fasterxml.jackson.databind.JsonMappingException: Root-Name 'name' tut nicht übereinstimmen erwartet ('JsonNode') für type [einfacher Typ, Klasse com.fasterxml.jackson.databind.JsonNode] " –

+0

Wie erwarten Sie, den Namen zu erhalten, wenn Name innerhalb des Antwortobjekts verschachtelt ist? – hofan41

+0

Sie müssen innerhalb des Antwortobjekts, des Ereignisarrays, das Ereignisarray durchlaufen, um jeden Namen auszudrucken. – hofan41