即使很晚,我也想回答这个问题。为了解释它,我们必须知道什么是serialization
和deserialization
。
serialization
正在转换object
为,json string
并且deserialization
正在转换json string
为object
。
假设我们的User
课程没有注释。
public class User{
private String userName;
private Integer userAge;
public User(String name, Integer age){
userName = name;
userAge = age;
}
}
而我们serialize
这个object
如下
User user = new User("Ahmed", 30);
Gson gson = new Gson();
String jsonString = gson.toJson(user);
Json字符串将是这样的
{
"userName":"Ahmed",
"userAge":30
}
如果我们添加注释 @SerializedName
public class User{
@SerializedName("name")
private String userName;
@SerializedName("age")
private Integer userAge;
public User(String name, Integer age){
userName = name;
userAge = age;
}
}
Json字符串将是这样的
{
"name":"Ahmed",
"age":30
}
@Expose
用于允许和禁止serialization
和deserialization
。
@Expose
是可选的,它具有两个配置参数:serialize
和deserialize
。默认情况下,它们设置为true。为了serialize
和deserialize
同@Expose
我们建立GSON对象这样
Gson gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
下面userName
不会反序列化。userName的值为null
。
@SerializedName("name")
@Expose(deserialize = false)
private String userName;
以下userName
内容不会被序列化。
@SerializedName("name")
@Expose(serialize = false)
private String userName;
Json字符串将是这样。仅userAge
将反序列化。
{
"age":30
}