Объясните в чем разница между
@SerializedName("name")
public String str;`
// и
public String str
Доступ к переменной я и так и так могу получить. Зачем тогда SerializedName нужен?
Java class example,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Этот класс имеет два поля, они аннотируются аннотацией @SerializedName. Параметр (значение) этой аннотации - это имя, которое будет использоваться при сериализации и десериализации объектов. Например, поле Java personName представляется как name в JSON.
JSON Example,
{
"name":"chintan",
"bd":"01-01-1990"
}
С помощью аннотации SerializedName из Gson можно указывать имя сериализуемого/десериализуемого поля при парсинге Json или при переводе объекта в Json.
Например у вас есть ваш класс:
class MyString {
@SerializedName("mystring") public String str;
}
и Json вида {"str":"some text"}, тогда при десериализации этого Json ваше поле str будет null, потому что вы явно указали, что при десериализации в str должно писаться значение из поля json mystring. То есть если вы хотите, чтобы json правильно десериализовался, нужно передавать такой Json в этом случае: {"mystring":"some text"}
При отсутствии аннотации SerializedName поле будет десериализовываться на основе имени поля в классе, с поправкой на FieldNamingPolicy, которую вы указали при создании объекта Gson (либо FieldNamingPolicy.IDENTITY - значение по умолчанию).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости