Какова основная цель аннотации @SerializedName в Android с помощью Gson
Какова основная цель аннотации @SerializedName в Android с помощью Gson
Приведите мне несколько разных примеров. Я не могу понять основную цель использования этого.
Ответ 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.