gpt4 book ai didi

java - Gson:@Expose 与 @SerializedName

转载 作者:IT老高 更新时间:2023-10-28 12:46:14 26 4
gpt4 key购买 nike

关于 Gson,@Expose@SerializedName("stringValue") 有什么区别?

最佳答案

即使为时已晚,我也想回答这个问题。要解释它我们必须知道什么是serializationdeserializationserialization 正在将 object 转换为 json string 并且 deserialization 正在将 json string 转换为 对象

假设我们有一个没有注释的 User 类。

public class User{
private String userName;
private Integer userAge;

public User(String name, Integer age){
userName = name;
userAge = age;
}
}

我们序列化这个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 用于允许或禁止serializationdeserialization@Expose 是可选的,它有两个配置参数:serializedeserialize。默认情况下,它们设置为 true。要使用 @Expose serializedeserialize 我们创建这样的 gson 对象

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

userName 以下的内容不会被反序列化。用户名的值为 null

@SerializedName("name")
@Expose(deserialize = false)
private String userName;

userName以下不会被序列化。

@SerializedName("name")
@Expose(serialize = false)
private String userName;

Json 字符串会是这样的。只有 userAge 会被反序列化。

{
"age":30
}

关于java - Gson:@Expose 与 @SerializedName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com