Парсинг Json-a в разные объекты?

На клиенте надо перевести в json один из трех объектво, допустим А, Б, С.
Сервер принимает json-строку и надо ее распарсить в объект, но используя GSON надо конкретно указать класс
A a = json.fromJson(parse, A.class);
Какие есть варианты, если неизвестно какой тип придёт на сервер? Есть, конечно, вариант, сделать в каждом классе поле String type = "нужный нам тип класса" и с помощью фабрики и этого типа уже вогнать в нужный тип, но это совсем не выглядит хорошим вариантом. Как это можно сделать еще? Заранее спасибо
  • Вопрос задан
  • 421 просмотр
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
B общем случае - никак. Если у классов поля совпадают, их никак не различить, например. А так, написать своей адаптер и, например, перебором пробовать распарсить, до победного.
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
В любом случае вариантов как минимум два, или заглядывать вперед в потоке, или заново переоткрывать.
Можно поступить хитрым образом - использовать https://docs.oracle.com/javase/7/docs/api/java/io/... и/или GSON stream API.

В первом случае мы заглядываем в поток на какой-то размер, просматриваем его на наличии нужных нам маркеров, затем делаем unread и уже работаем как нам нужно.

Во втором случае можно прочитать только первый элемент, найти нужные нам маркеры и например переоткрыть файл заново - https://memorynotfound.com/gson-streaming-api-read...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы