@KDoV
Студент 3 курса технического университета

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

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

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

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

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

Войти через TM ID
Похожие вопросы