Java笔记-Gson在解析包含单个字母的驼峰式变量遇到的一个小坑

踩坑过程

Coding时,我需要构建一个柱状图的json数据结构吐给前端。图表用的是百度的Echarts图形库,表结构里,有一个表示纵坐标的属性叫yAxisIndex。很自然的,我在bean对象里面有一个这样的属性:private Integer yAxisIndex;但是发现,在使用Gson序列化之后,就变成了yaxisIndex的样子。研究后发现,如果变量里面包含单个字母时,Gson在解析时就会把这个单个字母和后面的单词作为一个整体进行转义。


问题

这个问题其实可以归结为一个常见的问题,就是在使用Gson进行序列化和反序列化时候,自己定义的java对象里的属性名跟json里的字段名不一致的问题。场景如下:
json结构

{
    "name": "xiaoming",
    "sex": "male",
    "address": "shanghai"
}

bean结构

public class Person {
    private String name;
    private String sex;
    private String addr;
}

我们发现,json中表示地址的字段是address,而在类中,属性命名则是缩写addr,这就带来了不一致的问题。


解决方案

使用Gson提供的注解@SerializedName,使用方法如下:

public class Person {
    private String name;
    private String sex;
    @SerializedName("address")
    private String add;
}

这样,在序列化和反序列化的时候,就会相互自动match了,同时也解决了我遇到的那个坑。

你可能感兴趣的:(Java笔记-Gson在解析包含单个字母的驼峰式变量遇到的一个小坑)