Какова основная цель @SerializedNameаннотации в Android с помощью Gson?
Приведите несколько разных примеров. Я не могу понять основную цель его использования.
Какова основная цель @SerializedNameаннотации в Android с помощью Gson?
Приведите несколько разных примеров. Я не могу понять основную цель его использования.
Ответы:
Пример класса Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Этот класс имеет два поля, которые представляют имя человека и дату рождения человека. Эти поля помечаются аннотацией @SerializedName . Параметр (значение) этой аннотации - это имя, которое будет использоваться, когда serialisingи deserialisingобъекты. Например, поле Java personName представлено как имя в JSON.
Пример JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
Здесь уже есть несколько ответов, но я хотел бы добавить, что если вы используете ProGuardдля обфускации своего кода и не используете его @SerializedName("name")в своем классе модели, то ваш GSON не будет работать. Потому что из-за обфускации имена ваших переменных могли измениться с String nameна, что String aпривело к нарушению синтаксического анализа GSON, поскольку GSON будет искать ключ aв json и не удастся.
При указании @SerializedNameGSON не будет искать в json на основе имени переменной и будет просто использовать указанное @SerializedName.
Конечно, вы можете сказать proguard, чтобы он не запутывал вашу модель, но если вы хотите, чтобы модель запутывалась, вы должны указать @SerializedName
Вы можете указать Proguard, чтобы он не запутывал ваши классы данных, указав @Keep поверх класса. Это не удалит и не запутает ваш класс. Нет необходимости явно добавлять @SerializedName в каждое поле, если имя поля похоже на используемый для него ключ Json.