问题
The JSON string is:
{
"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"
]
}
}
But Java can not have a value with a "-" in it. So how to get "us-phonetic"?
回答1:
Create a POJO class to represent your JSON and decorate your fields with the SerializedName annotation.
gson uses @SerializedName("json_name") when the name of the JSON field and the name of the java field are different.
I have taken the liberty to simplify your JSON for example purposes:
{
"us-phonetic": "'flæbɚɡæstɪd",
"phonetic": "'flæbɚɡæstɪd",
"uk-phonetic": "'flæbəga:stid"
}
Use the following class to deserialize your JSON:
public class Basic {
@SerializedName("us-phonetic")
private String usPhonetic;
@SerializedName("phonetic")
private String phonetic;
@SerializedName("uk-phonetic")
private String ukPhonetic;
}
To deserialize:
Basic b = gson.fromJson(json, Basic.class);
来源:https://stackoverflow.com/questions/37729066/set-pojo-for-gson-when-json-key-has-a-dash