Gson: @Expose vs @SerializedName

As for Gson, what is the difference between @Exposeand @SerializedName("stringValue")?

+35
source share
4 answers

@SerializeNameused to set the key that will include the json object, but @Exposeused to determine if the variable will be displayed for serialization and deserialization or not. Here is the documentation @Expose.

+61
source

, . , , 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
}
+30
class Person{
String name;
String password;
}

, Expose SerializedName, AS

SerializedName ( " " ) ( " " ),

Serialized

{"username":"trinadh","password":"hello"}

{"name":"trinadh","password":"hello"}
+11

, @Expose : deserialize serialize, .

+5

Source: https://habr.com/ru/post/1623985/


All Articles