在讲如何解析数据之前,先描述一下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); /