Подтвердить что ты не робот

Какова основная цель аннотации @SerializedName в Android с помощью Gson

Какова основная цель аннотации @SerializedName в Android с помощью Gson

Приведите мне несколько разных примеров. Я не могу понять основную цель использования этого.

4b9b3361

Ответ 1

Пример класса Java,

public class Person {

    @SerializedName("name")
    private String personName;

    @SerializedName("bd")
    private String birthDate;

}

Этот класс имеет два поля, которые представляют имя человека и дату рождения человека. Эти поля аннотируются аннотацией @SerializedName. Параметр (значение) этой аннотации - это имя, которое будет использоваться при serialising и deserialising объектах. Например, поле Java имя_пользователя представлено как имя в JSON.

Пример JSON,

{
    "name":"chintan",
    "bd":"01-01-1990"
}

Ответ 2

Здесь уже мало ответов, но я хотел бы добавить, что если вы используете ProGuard для Obfuscate вашего кода и не используете @SerializedName("name") в вашем классе модели, ваш GSON не будет работать. Поскольку из-за обфускации ваши имена переменных могли быть изменены с String name на String a, что привело к разрыванию сеанса GSON, поскольку GSON будет искать ключ a в json, и он будет терпеть неудачу.

Указывая @SerializedName, GSON не будет выглядеть в json на основе имени переменной и будет просто использовать указанный @SerializedName.

Конечно, вы можете сказать, что proguard не обфускает вашу модель, но если вы хотите, чтобы модель была запутана, тогда вы должны указать @SerializedName

Ответ 3

Вы можете указать Proguard не запутывать ваши классы данных, указав @Keep поверх класса. Это не удалит и не запутает ваш класс. Нет необходимости явно добавлять @SerializedName к каждому полю, если имя поля похоже на используемый для него ключ Json.