配置Gson以更改json中的密钥

时间:2014-03-21 19:55:56

标签: java json gson

我正在考虑在我的网络服务中使用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(nameage)依赖于变量的名称,所以如果我的变量名称发生变化,那么key也会发生变化。然后,只要变量名称在Web服务中发生变化,此Web服务的客户端就必须更改代码。

所以,无论如何,我可以用键名映射每个变量。例如,映射name to nameOfDogage to ageOfDog,以便json看起来像

{"nameOfDog":"Tommy","ageOfDog":"12"}

1 个答案:

答案 0 :(得分:8)

是的,使用the SerializedName annotation

由于是@Target(value=FIELD),因此可以(仅)应用于实例字段。

所以:

@SerializedName("nameOfDog")
String name;

(在杰克逊,@JsonProperty("nameOfDog")