Здравствуйте, интересует как можно создать подкласс ListHistory
в Person
, без сеттеров и передачи уже готового ListHistory
.
Имеется такой JSON:
{
"name":"Alexander",
"AllHistory":[
{
"key":"key",
"value":"value"
}
]
}
Классы:
class Person {
@SerializedName("name")
String name;
ListHistory listHistory;
}
class ListHistory{
List<History> history = new ArrayList<>();
}
class History{
String key;
String value;
}
Deserializer:
@Override
public Person deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Gson gson = new Gson();
JsonElement data = json.getAsJsonObject().get("name");
return gson.fromJson(data, Person.class);
}
Все как всегда проще, чем кажется.... :)
Чтоб это провернуть необходимо создать еще один deserialize
для ListHistory
, и регистрировать его не обязательно.
В deserialize
для Person
, необходимо обратиться к контексту (JsonDeserializationContext
) и вызвать десериализацию уже для ListHistory
context.deserialize(data.getAsJsonObject().get("AllHistory").getAsJsonArray(),
new TypeToken<ListHistory>() {
}.getType()
);
Ну, а далее описываем deserialize
для ListHistory
.
И да будет свет xD
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с такой проблемойКак вывести данные на экран в поле jtextArea? JtextArea описан в одном классе, данные для вывода получаются из другого...
Я сделал клиент по обмену сообщениями, в котором сообщения отображаются при помощи recyclerView, но список открывается в самом начале(наверху),...
ЗдравствуйтеВот код для получения массива имени файлов из директории:
ЗдравствуйтеПочему в следующем коде переменная _message в методе Message получает null?