gson的@Expose注解和@SerializedName注解

转载 2016年05月31日 12:06:58
1.使用@Expose可以区分实体中不想被序列化的属性

@Expose标签的2个属性. 

  1.1 deserialize
 (boolean) 反序列化 默认 true
    1.2 serialize  (boolean) 序列化 默认 true

    使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化

public class User {

@Expose

private String username;

@Expose(serialize=false)

private int age ;

private List<String> list;

public User(String username, int age) {

super();

this.username = username;

this.age = age;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public List<String> getList() {

return list;

}

public void setList(List<String> list) {

this.list = list;

}

public static void main(String []args){

User user = new User("lemon",27);

List<String> list = new ArrayList<String>();

list.add("l1");

list.add("l2");

user.setList(list);

Gson g1 = new Gson();

//使用 new Gson();

System.out.println(g1.toJson(user)); //{"username":"lemon","age":27,"list":["l1","l2"]}

//使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

Gson g2 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

System.out.println(g2.toJson(user)); //{"username":"lemon"}

  }

}


2.使用@SerializedName标签定义属性序列化后的名字

@Expose

@SerializedName("name")

private String username;


public static void main(String []args){

User user = new User("lemon",27);

List<String> list = new ArrayList<String>();

list.add("l1");

list.add("l2");

user.setList(list);

Gson g1 = new Gson();

//使用 new Gson();

//{"name":"lemon","age":27,"list":["l1","l2"]}

System.out.println(g1.toJson(user)); 

//使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

Gson g2 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

//{"name":"lemon"}

System.out.println(g2.toJson(user)); 

}


通透Gson@Expose注解、@SerializedName、解析json数据

在讲如何解析数据之前,先描述一下gson中的两个注解@Expose和@SerializedName。 @Expose注解的作用:区分实体中不想被序列化的属性,其自身包含两个属性deserialize...
  • andywuchuanlong
  • andywuchuanlong
  • 2015年03月05日 09:21
  • 14640

gson的@Expose注解和@SerializedName注解

1.使用@Expose可以区分实体中不想被序列化的属性 @Expose标签的2个属性.    1.1 deserialize (boolean) 反序列化 默认 true     1...
  • z69183787
  • z69183787
  • 2014年01月27日 10:08
  • 15157

Gson Model Annotations - @SerializedName 匹配多个反序列化名称

在之前的 Gson 系列博客文章中,我们介绍过了如何改变 Java Model 变量的序列化命名。如果你的服务器接口返回了不同的字段名,你可以使用 @SerializedName 注解...
  • cpfdpzc
  • cpfdpzc
  • 2016年12月07日 18:27
  • 2135

Gson的@SerializedName和@Expose注解

运行时遇到报错:Gson转换实体类为json时报declares multiple JSON fields named错误 后来发现是因为子类与父类中存在相同的属性名,由于Gson序列化时会将子类与...
  • bt6666
  • bt6666
  • 2017年11月27日 18:27
  • 90

Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段

在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。 Gson解析json的方法我这里就不详细说明了,网上一大把的例子,我这里主要说一下使...
  • u010147215
  • u010147215
  • 2016年04月04日 16:52
  • 1866

Gson之注解

注解是Gson的强大存在之一,为实际情况解决了很多问题。 1. GsonBuilder         之前重建Gson实例通过newGson(),时会创建一个带有默认配置 选项的Gson实例。如果...
  • IO_Field
  • IO_Field
  • 2016年04月23日 15:10
  • 1521

Android Gson @SerializedName注解

在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成Java对象或者集合。 Gson解析json的方法我这里就不详细说明了,网上一大把的例子,我这里主要说一下使用...
  • h183288132
  • h183288132
  • 2017年01月02日 18:38
  • 836

Gson的注解和策略使用

原址: http://blog.csdn.net/jackie_xiaonan/article/details/1685268 自定义解析过程 控制版本         gson提供了两...
  • wuyou1336
  • wuyou1336
  • 2016年07月27日 16:27
  • 460

Gson Model Annotations - 如何使用@SerializedName更改字段命名

在之前的 Gson 系列博客文章中,我们介绍过了第一个用来控制属性序列化和反序列化的注解 @Expose 。在这篇文章中,我们将介绍下一个更改名称映射的注解 @Seriali...
  • cpfdpzc
  • cpfdpzc
  • 2016年12月07日 18:26
  • 885

Google Gson 属性重命名(@SerializedName 注解)

Google Gson 属性重命名(@SerializedName 注解)
  • Silent_Paladin
  • Silent_Paladin
  • 2017年01月04日 21:17
  • 2754
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gson的@Expose注解和@SerializedName注解
举报原因:
原因补充:

(最多只允许输入30个字)