2016-08-24 7 views
1

Ich möchte eine JSONstring Deserialize mit dem gleichen POJO für zwei Arten von Nachrichten. Werfen Sie einen Blick auf die untenstehende MeldungJackson JSON Deserialization Liste

{ 
"success": true, 
"data": [ 
    { 
     "id": 2, 
     "comments": null 
    }, 
    { 
     "id": 3, 
     "comments": null 
    } 
] 
} 

Die Daten sind ein Array, aber manchmal sind die Daten ein einzelnes Objekt:

{ 
"success": true, 
"data": 
    { 
     "id": 2, 
     "comments": null 
    } 
} 

Mein POJO sieht wie folgt aus:

public void setData(List<Object> data) 
{ 
    this.data = data; 
} 

Gibt es eine Möglichkeit zur Deserialisierung der zweiten Nachricht (wo Daten nicht ein Array ist) mit der gleichen Klasse?

Mit freundlichen Grüßen, Ricardo

+0

Sollte die zweite Nachricht stattdessen ein Array mit einem Element haben? – jrochette

Antwort

2

ich es havent verwendet, aber es ist ein Deserialisierung-Funktion, die für das auf Deserialisierung erlaubt:

ACCEPT_SINGLE_VALUE_AS_ARRAY (Standard: false)

Ermöglicht auto- Konvertierung von Nicht-JSON-Array-Werten in Einzelelement-Arrays und Collections (implizite "Array-Wrapper" hinzufügen): Dies ist manchmal für die Interoperabilität erforderlich, da einige Bibliotheken und Frameworks JSON-Arrays beim Serialisieren von Einzelelement-Arrs auslassen ays.

sieht auch wie es auch das Gegenteil für die Serialisierung ist (Einzelelement-Arrays auf nicht-JSON Array

UNWRAP_SINGLE_VALUE_ARRAYS (default Schreiben: false) (da 2,4)

Ermöglicht auto- Konvertierung von Einzelelement-Arrays in Nicht-JSON-Array-Werte: Dies ist ähnlich der ACCEPT_SINGLE_VALUE_AS_ARRAY-Funktion, funktioniert aber in der umgekehrten Weise (dh wenn Sie eine gebundene Eigenschaft haben, die kein Array oder eine Sammlung ist, würde ein einzelnes Werte-Array in JSON verwendet akzeptabel sein, um an diese Eigenschaft zu binden.) Wenn der JSON-Wert mehr enthält als ein Element im Array wird die Deserialisierung weiterhin fehlschlagen.

siehe https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features

Ich bin nicht sicher, ob es einen Weg gibt, diese für bestimmte Felder zu tun. Es scheint ein Alles-oder-Nichts-Ding zu sein.

Hoffe, das hilft!

+0

Danke Loesak! Lief wie am Schnürchen! – user1972700

+0

@ user1972700 np. es hat funktioniert. – loesak

Verwandte Themen