2016-06-28 3 views
1

Im Moment verwende ich Gson, um JSON zu Objekt zu deserialisieren.Wie kann ich JSON für ein Objekt mit einem HashMap-Attribut deserialisieren?

Die JSON sieht wie folgt aus:

[ 
    { 
     "hash":"c8b2ce0aacede58da5d2b82225efb3b7", 
     "instanceid":"aa49882f-4534-4add-998c-09af078595d1", 
     "text":"{\"C_FirstName\":\"\",\"ContactID\":\"2776967\",\"C_LastName\":\"\"}", 
     "queueDate":"2016-06-28T01:03:36" 
    } 
] 

Und mein Entitätsobjekt sieht wie folgt aus:

public class AppCldFrmContact { 
    public String hash; 
    public String instanceid; 
    public HashMap<String,String> text; 
    public String queueDate; 
} 

Wenn text war ein String Datentyp, alles in Ordnung sein würde. Aber dann könnte ich nicht auf verschiedene Felder zugreifen, wie ich es möchte.

Gibt es eine Möglichkeit, JSON in das gewünschte Objekt zu konvertieren?

Der Fehler, den ich bekomme, ist: Expected BEGIN_OBJECT but was STRING at line 1 column 174, die verständlich ist, wenn es es nicht analysieren kann.

Der Code, um das Parsen tun:

Type listType = new TypeToken<List<AppCldFrmContact>>() { 
     }.getType(); 
List<AppCldFrmContact> contacts = gson.fromJson(response.body, listType); 
+1

Das angezeigte Feld 'text' ist ein String, der ein JSON-Objekt und kein JSON-Objekt enthält! – Robert

+0

Wie würde es aussehen, wenn es ein JSON-Objekt wäre? Dann gibt es eine Möglichkeit, das gegebene JSON zu dem Objekt zu analysieren, das ich möchte? –

Antwort

0

Sie erhalten diesen Fehler, da Textfeld ein JSON Karte serialisiert an die Schnur. Wenn es sich um Ihre tatsächlichen Daten und nicht nur um ein Beispiel handelt, können Sie ein Feld mit @JsonDeserialize annotieren und Ihre eigene benutzerdefinierte JsonDeserializer<HashMap<String,String>> schreiben, die die Deserialisierung zweimal durchführt.

0

Für Sie erwartete Ergebnis, JSON-Daten wie unten Format sein sollte,

[ 
    { 
     "hash":"c8b2ce0aacede58da5d2b82225efb3b7", 
     "instanceid":"aa49882f-4534-4add-998c-09af078595d1", 
     "text":{"C_FirstName":"","ContactID":"2776967","C_LastName":""}, 
     "queueDate":"2016-06-28T01:03:36" 
    } 
] 
Verwandte Themen