Объекты JSON против объектов модели Spring - PullRequest
0 голосов
/ 03 октября 2011

Я использую стандартную среду Spring MVC 3x, и все мои модели построены со всеми хорошими реляционными компонентами (javax.persistence API) ... интегрированы с моей БД.

По мере развития приложения нам нужно было поддерживать вызовы JSON.

Учитывая, что в моем слое Model Entity отображаются различные отношения,

(classX-> classY, а также classY-> classX)

Мне интересно, как лучше всего переводить некоторые из этих классов моделей в соответствующие объекты JSON без повторных ссылок?

Например: пример ответа с ошибкой

{"classX":{"id":"1", "classY":{"id":"2", "classX":{"id":"1", "classY":{"id":"2"...

Я обдумываю пару методологий, на которые я не возражаю против обратной связи ...

  1. Сохраните существующие классы моделей и установите кросс-отношения в NULL, прежде чем помещать их в мой ModelMap, чтобы не было какой-либо формы повторной ссылки (я думаю, что это HACK)

    {"classX":{"id":"1", "classY":{"id":"2", "classX":null}}}
    
  2. Воссоздайте классы JSON, аналогичные существующим моделям, без повторных ссылок на классы (но я думаю, что это означает, что они не будут так же многократно использоваться ... так как в конечном итоге я получу только classX-> classY, а не наоборот Я хотел свернуть другой путь для ответа на данные).

    {"jsonClassX": {"id":"1", "jsonClassY":{"id":"2"}}}
    
  3. Просто создайте его как стандартные отображения ModelMap для каждого вызова контроллера. Таким образом, нет понятия повторно используемого класса JSON, и он зависит от способа, которым контроллер создает и организует возвращаемые значения. Это кажется самым простым, но это означает, что код нельзя использовать повторно (кроме вырезания и вставки) ...

    {"x":{"id":"1", "y":{"id":"2"}}} // for controller call 1
    {"y":{"id":"2", "x":{"id":"1"}}} // for controller call 2
    

Так что это те варианты, с которыми я сейчас жонглирую, и я не прочь получить отзывы и советы о том, как это сделали другие.

1 Ответ

0 голосов
/ 29 марта 2012

Вы должны использовать Джексона, чтобы управлять вашей json-сортировкой.Затем вы можете добавить аннотации к вашему объекту модели, которые сообщают Джексону, как обрабатывать этот тип отношений.http://wiki.fasterxml.com/JacksonFeatureBiDirReferences - хороший справочник по настройке этих отношений.

...