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