json字符串已经占据了数据传输的重要地位,我们难免要解析各种各样的json字符串,今天我在解析时就遇到了这个问题,当我们解析的字符串中带有关键字的字段,这种情况该字段是无法生成类的字段的,好在谷歌给我们提供了比较好的解决方法,就是使用@SerializedName(“”)注解。用法如下
@SerializedName注解的作用:定义属性序列化后的名称
//当我们直接定义如下字段时系统是报错的,因为abstract是java关键字
private String abstract; //报错
//当我们加上如下注解时,JSON字符串中的abstract字段就对应了该类中newAbstract字段
@SerializedName("abstract")
private String newAbstract;
除了@SerializedName,谷歌还提供了其他注解,具体如下
@Expose注解的作用:区分实体中不想被序列化的属性,其自身包含两个属性deserialize(反序列化)和serialize(序列化),默认都为true。
使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化.。
private class User{
private int id;
@Expose
private String name;
.......
}
这样create() gson对象序列化user,只会有name这一个属性
另外想要不序列化某个属性,也可以使用transient。
private class User{
private int id;
private transient String name;
.......
}