2016-06-09 58 views
2

JSON字符串是:设置为POJO时GSON JSON键都有一个破折号

{ 
    "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" 
     ] 
    } 
} 

但Java不能用它"-"的值。那么如何获得"us-phonetic"

回答

6

创建一个POJO类来表示您的JSON并使用SerializedName注释修饰您的字段。

gson使用@SerializedName("json_name")JSON字段的名称和java字段的名称不同。

我已经冒昧简化您JSON例如用途:

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

使用下面的类来反序列化JSON:

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

    @SerializedName("phonetic") 
    private String phonetic; 

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

反序列化:

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

谢谢非常 。 – vancake

+0

但仍然无法正常工作。不知道为什么...只是得到一个空值 – vancake

+0

非常奇怪,因为我刚刚测试了上面的代码,它的工作原理。你在哪里得到一个'null'? –