我正在考虑在我的网络服务中使用Gson,但我观察到Gson返回name of a variable in class as a key in Json format
。
E.g
interface Animal{
}
class Dog implements Animal{
public String name, age;
@Override
public String toString() {
return name+"\t" + age;
}
}
对于Dog的对象,Json如下:
{"name":"Tommy","age":"12"}
现在,我的问题是,因为Json中的Key(name
和age
)依赖于变量的名称,所以如果我的变量名称发生变化,那么key也会发生变化。然后,只要变量名称在Web服务中发生变化,此Web服务的客户端就必须更改代码。
所以,无论如何,我可以用键名映射每个变量。例如,映射name to nameOfDog
和age to ageOfDog
,以便json看起来像
{"nameOfDog":"Tommy","ageOfDog":"12"}
答案 0 :(得分:8)
是的,使用the SerializedName
annotation。
由于是@Target(value=FIELD)
,因此可以(仅)应用于实例字段。
所以:
@SerializedName("nameOfDog")
String name;
(在杰克逊,@JsonProperty("nameOfDog")
)