Могу ли я создать классы из данных JSON, аналогичных Jaxb - PullRequest
5 голосов
/ 04 ноября 2011

Таким образом, мой код является клиентом API, данные возвращаются в формате XML, и я смог создать действительный файл XSD из некоторых примеров этого XML, а затем сгенерировать некоторые классы JAXB из схемы, чтобы мой код теперь мог загружаться и работать с данными XML без необходимости работать непосредственно с Xml.

Но, к сожалению, в последней версии API они перестали поддерживать XML и возвращают только JSON. Есть ли процесс json, который я могу сделать аналогично процессу xml?

Если это невозможно из схемы, существуют ли решения, так что, если я вручную создаю свои классы json, я могу использовать их для автоматического военного действия в необработанных данных json, поэтому по крайней мере мне придется иметь дело с json только один раз.

РЕДАКТИРОВАТЬ: Может быть, https://github.com/ko5tik/jsonserializer было бы полезно

ОБНОВЛЕНИЕ: к вашему сведению, поэтому я посмотрел на jsonschema2pojo, но он создает только pojos из схемы, и у меня фактически не было схемы json, только фактический json. Я попытался создать схему на примере json, который у меня был, но у меня не получилось, но на самом простом примере.

Затем я посмотрел на http://wiki.fasterxml.com/JacksonInFiveMinutes, Джексон мог бы использовать pojos, созданные jsonschema2pojo, если бы Id удалось заставить его работать. Затем я попытался следовать примеру и создал POJO на основе данных json, которые у меня были, и это было довольно легко, затем я попробовал полную привязку данных, используя это, и это сработало в первый раз.

Итак, в заключение, я собираюсь использовать Джексона для работы с json, возвращаемым веб-службой, мне придется вручную создавать POJO для каждой сущности, но по крайней мере это работает.

Ответы [ 4 ]

9 голосов
1 голос
/ 21 декабря 2011

Если вы хотите создать POJO из примера файла JSON, я создал (хакерский) скрипт ruby, который может помочь. Я добавил подробности в другом ответе здесь: https://stackoverflow.com/a/8585423/1109175

Вы можете найти код на github: https://github.com/wotifgroup/json2pojo

0 голосов
/ 04 ноября 2011

Я не думаю, что есть JSON-эквивалент XSD, и это делает то, что вы просите, очень сложно для реализации.Для начала программа-генератор не может надежно определить типы Java, которые необходимо использовать для атрибутов объекта JSON.(В случае XML вы сделали эти выводы и выразили их в соответствующем XSD.)

0 голосов
/ 04 ноября 2011

Нет, я не вижу способа сделать это ... JSON не имеет определения схемы, поэтому нет метаданных для генерации классов.

Редактировать: Я исправлен, есть определение схемы (черновик), однако оно истекло с начала этого года, и я не встречал никаких предоставленных схем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...