当JSON键有短划线时为Gson设置POJO

van*_*ake 5 java android json 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"
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

但是Java里面没有一个值"-".那怎么弄"us-phonetic"

Cli*_*gts 11

创建一个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"
}
Run Code Online (Sandbox Code Playgroud)

使用以下类反序列化您的JSON:

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

  @SerializedName("phonetic")
  private String phonetic;

  @SerializedName("uk-phonetic")
  private String ukPhonetic;
}
Run Code Online (Sandbox Code Playgroud)

要反序列化:

Basic b = gson.fromJson(json, Basic.class);
Run Code Online (Sandbox Code Playgroud)