Bek*_*Bek 81
即使已经很晚了,我也想回答这个问题.为了解释它,我们必须知道什么是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;
}
}
Run Code Online (Sandbox Code Playgroud)
我们serialize
这个object
如下
User user = new User("Ahmed", 30);
Gson gson = new Gson();
String jsonString = gson.toJson(user);
Run Code Online (Sandbox Code Playgroud)
Json字符串将是这样的
{
"userName":"Ahmed",
"userAge":30
}
Run Code Online (Sandbox Code Playgroud)
如果我们添加注释 @SerializedName
public class User{
@SerializedName("name")
private String userName;
@SerializedName("age")
private Integer userAge;
public User(String name, Integer age){
userName = name;
userAge = age;
}
}
Run Code Online (Sandbox Code Playgroud)
Json字符串将是这样的
{
"name":"Ahmed",
"age":30
}
Run Code Online (Sandbox Code Playgroud)
@Expose
用于允许或禁止serialization
和deserialization
.
@Expose
是可选的,它有两个配置参数:serialize
和deserialize
.默认情况下,它们设置为true.为了serialize
和deserialize
同@Expose
我们建立GSON对象这样
Gson gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Run Code Online (Sandbox Code Playgroud)
下面userName
不会反序列化.userName的值将是null
.
@SerializedName("name")
@Expose(deserialize = false)
private String userName;
Run Code Online (Sandbox Code Playgroud)
下面userName
不会被序列化.
@SerializedName("name")
@Expose(serialize = false)
private String userName;
Run Code Online (Sandbox Code Playgroud)
Json字符串将是这样的.只会userAge
被反序列化.
{
"age":30
}
Run Code Online (Sandbox Code Playgroud)
Gav*_*iel 79
@SerializeName
用于设置json对象将包含的键,但是@Expose
用于决定是否将为序列化和反序列化公开变量.这是文档@Expose
.
Tri*_*oya 11
class Person{
String name;
String password;
}
Run Code Online (Sandbox Code Playgroud)
假设如果我将i注释Expose放在没有SerializedName的变量名或密码之上,它将被序列化为AS变量名
但是如果我们将SerializedName设置为(" username ")或(" password "),它们将使用该密钥序列化
如果序列化
{"username":"trinadh","password":"hello"}
Run Code Online (Sandbox Code Playgroud)
如果不
{"name":"trinadh","password":"hello"}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
34602 次 |
最近记录: |