JAXB Цикл обнаружен в графе объектов - PullRequest
5 голосов
/ 09 февраля 2011

Я хочу преобразовать мое pojo в json с помощью JAXB, мое pojo имеет отношение один ко многим, и когда я преобразовываю свое pojo в json, JAXB генерирует ошибку "В графе объектов обнаружен цикл. Это приведет к бесконечно глубокому XML ».

Я прочитал из Интернета, что эту проблему можно решить с помощью @XmlID и @XmlIDREF, но есть одна проблема, мой атрибут Id не типа String, а Long. и насколько я знаю, @XmlID можно использовать только со свойством String.

Другая сеть предлагает использовать eclipselink MOXy, но MOXy не может генерировать json.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

Как вы упомянули в своем вопросе EclipseLink MOXy (я технический руководитель) имеет аннотацию @XmlInverseReference для решения проблемы двунаправленных отношений.Начиная с EclipseLink 2.4 MOXy может производить / потреблять JSON.

Для получения дополнительной информации

1 голос
/ 09 февраля 2011

В вашем определении есть циклическая ссылочная проблема.

Попробуйте поставить @XmlTransient над проблемным определением.

Также о XmlID и типе строки см. http://markmail.org/message/up6vrzjixxrvy5th.

0 голосов
/ 09 февраля 2011

Спецификация JAXB требует, чтобы свойство, помеченное @XmlID, было свойством String.MOXy impl позволяет использовать long.

Один из способов использования полной реализации, совместимой с JAXB, состоит в дублировании вашего идентификатора в поле String (до сериализации)

Не так много знаю о JAXBно XStream позволяет вам использовать разные режимы, и некоторые из этих режимов будут давать ссылки на адрес xpath (абсолютный или относительный) элемента в вашем xml, если эти элементы уже отображаются.(И вы можете сделать Json с XStream)

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