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

本文介绍了Gson库中@Expose注解的功能,用于控制实体属性的序列化和反序列化,并提及@SerializedName用于指定JSON字段映射。通过new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(),可以排除未标记@Expose的属性。同时,使用transient关键字也可阻止属性序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在讲如何解析数据之前,先描述一下gson中的两个注解@Expose和@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这一个属性

@SerializedName注解的作用:定义属性序列化后的名称

public class User{
     private int id;
     @Expose
     @SerializedName("username")
     private String name;
     .......

}

另外想要不序列化某个属性,也可以使用transient。

private class User{
      private int id;
      private transient String name;
      .......

}

下面列举一下gson如何解析json数据的

//转换器
GsonBuilder builder = new GsonBuilder();
<span style="color:#ff0000;">// 不转换没有 @Expose 注解的字段</span>
builder.excludeFieldsWithoutExposeAnnotation();
Gson gson = builder.create();
<span style="color:#ff0000;">//1、对象转string</span>
Student stu = new Student();
stu.setStudentId(333);
stu.setStudentName("qqq");
String stuStr = gson.toJson(stu);
System.out.println(stuStr); /
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值