格森:@Expose vs @SerializedName
关于Gson,和有什么区别?@Expose
@SerializedName("stringValue")
关于Gson,和有什么区别?@Expose
@SerializedName("stringValue")
即使很晚了,我也想回答这个问题。为了解释它,我们必须知道什么是 和 。 正在转换为 和 正在转换为 。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
用于允许或禁止 和 。 是可选的,它有两个配置参数:和 。默认情况下,它们设置为 true。To 和我们一起创建像这样的 gson 对象serialization
deserialization
@Expose
serialize
deserialize
serialize
deserialize
@Expose
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
}