Как правильно реализовать это через gson.
Есть класс Shop, а есть json который выглядит так.
Чтобы сопоставить поля есть аннотация @SerializedName
. А вот как сделать если имя класса не совпадает с именем объекта в JSON? Есть ли какие-либо аннотации. Или делать класс обертку Data?
{
"data": {
"products": [
{
...
}
],
"departments": [
{
...
}
]
}
}
Имя класса не обязательно должно совпадать с именем объекта. На вашем примере:
{
"data": {
...
}
}
Должно соответствовать следующему классу
public class Root {
@SerializedName("data")
private Shop shop;
...
}
Библиотека GSON содержит мощнейший механизм кастомной сериализации/десериализации объектов - дженерик интерфейсы
public interface JsonSerializer<T> {
JsonElement serialize(T var1, Type var2, JsonSerializationContext var3);
}
и
public interface JsonDeserializer<T> {
T deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException;
}
Реализовав их и использовав при создании объекта GSON
через билдер GsonBuilder
, зарегистрировав адептор к типу класса;
new GsonBuilder().registerTypeAdapter(UrClass.class, new UrClassAdapter()).create()
Вы получите очень гибкий инструмент для всевозможных трансформаций представления вашего класса: от свертки параметров до преобразования типов, в том числе и изменения имён полей класса.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Приложение на spring4+jaxb+jpa+hibernate-envers работающие с websphere и oracle11g
Я использую библиотеку https://githubcom/rubenlagus/TelegramBots
Задача такова: вводи числа с клавиатуры, плюсуй их, при написании слова "сумма" выводить суммуКомпилится, запускается, но после ввода слова,...
День добрыйПри запросе по протоколу rtsp к камере сервер требует digest-авторизацию