2016-06-09 7 views
2

Die JSON-String hat, ist:Set POJO für Gson wenn JSON Schlüssel einen Bindestrich

{ 
    "translation": ["some words"], 
    "basic": { 
     "us-phonetic": "'flæbɚɡæstɪd", 
     "phonetic": "'flæbɚɡæstɪd", 
     "uk-phonetic": "'flæbəga:stid", 
     "explains": ["v. some words", 
      "adj. some words" 
     ] 
    } 
} 

Aber Java kann keinen Wert mit einem "-" in ihm. So, wie man "us-phonetic" erhält?

Antwort

6

Erstellen Sie eine Klasse für Ihre JSON und dekorieren Sie Ihre Felder mit der SerializedName Annotation.

gson verwendet @SerializedName("json_name"), wenn der Name des Feldes JSON und der Name des Java-Felds unterschiedlich sind.

Ich habe die Freiheit genommen Ihre JSON zum Beispiel Zwecke zu vereinfachen:

{ 
    "us-phonetic": "'flæbɚɡæstɪd", 
    "phonetic": "'flæbɚɡæstɪd", 
    "uk-phonetic": "'flæbəga:stid" 
} 

Verwenden Sie die folgende Klasse Ihre JSON deserialisieren:

public class Basic { 
    @SerializedName("us-phonetic") 
    private String usPhonetic; 

    @SerializedName("phonetic") 
    private String phonetic; 

    @SerializedName("uk-phonetic") 
    private String ukPhonetic; 
} 

deserialisieren:

Basic b = gson.fromJson(json, Basic.class); 
+0

Dank so sehr . – vancake

+0

Aber immer noch nicht funktioniert. Ich weiß nicht warum ... nur eine Null – vancake

+0

Sehr seltsam, wie ich gerade den obigen Code getestet habe und es funktioniert. Wo bekommst du eine Null? –

Verwandte Themen