关于Gson解析关键字处理问题

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;
      .......

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章