Этот класс имеет два поля, которые представляют имя человека и дату рождения человека. Эти поля помечаются аннотацией @SerializedName . Параметр (значение) этой аннотации - это имя, которое будет использоваться, когда serialisingи deserialisingобъекты. Например, поле Java personName представлено как имя в JSON.
@MuhammadAli, я рад помочь вам. Вы также можете отдать мне должное, проголосовав за, и принять ответ, моя дорогая :)
Чинтан Ратод,
3
Голосующие против
4
Хороший ответ .... Прямо к Json
делу
Рад, что это помогло. :)
Чинтан Ратод
1
Действительно полезно !! ; Большое вам спасибо :) @ChintanRathod
Имран
65
Здесь уже есть несколько ответов, но я хотел бы добавить, что если вы используете ProGuardдля обфускации своего кода и не используете его @SerializedName("name")в своем классе модели, то ваш GSON не будет работать. Потому что из-за обфускации имена ваших переменных могли измениться с String nameна, что String aпривело к нарушению синтаксического анализа GSON, поскольку GSON будет искать ключ aв json и не удастся.
При указании @SerializedNameGSON не будет искать в json на основе имени переменной и будет просто использовать указанное @SerializedName.
Конечно, вы можете сказать proguard, чтобы он не запутывал вашу модель, но если вы хотите, чтобы модель запутывалась, вы должны указать @SerializedName
Gr8 info, я говорил proguard не запутывать модели. Теперь с этим я справлюсь. :)
akashPatra
1
Это очень важно. Потеряли 2 часа и везде добавляли @SerializedName.
Абхиджит Куране,
2
Вы можете указать Proguard, чтобы он не запутывал ваши классы данных, указав @Keep поверх класса. Это не удалит и не запутает ваш класс. Нет необходимости явно добавлять @SerializedName в каждое поле, если имя поля похоже на используемый для него ключ Json.
Ответы:
Пример класса Java,
Этот класс имеет два поля, которые представляют имя человека и дату рождения человека. Эти поля помечаются аннотацией @SerializedName . Параметр (значение) этой аннотации - это имя, которое будет использоваться, когда
serialising
иdeserialising
объекты. Например, поле Java personName представлено как имя в JSON.Пример JSON,
источник
Json
Здесь уже есть несколько ответов, но я хотел бы добавить, что если вы используете
ProGuard
для обфускации своего кода и не используете его@SerializedName("name")
в своем классе модели, то ваш GSON не будет работать. Потому что из-за обфускации имена ваших переменных могли измениться сString name
на, чтоString a
привело к нарушению синтаксического анализа GSON, поскольку GSON будет искать ключa
в json и не удастся.При указании
@SerializedName
GSON не будет искать в json на основе имени переменной и будет просто использовать указанное@SerializedName
.Конечно, вы можете сказать proguard, чтобы он не запутывал вашу модель, но если вы хотите, чтобы модель запутывалась, вы должны указать
@SerializedName
источник
Вы можете указать Proguard, чтобы он не запутывал ваши классы данных, указав @Keep поверх класса. Это не удалит и не запутает ваш класс. Нет необходимости явно добавлять @SerializedName в каждое поле, если имя поля похоже на используемый для него ключ Json.
источник