Я использую стандартную среду 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"...
Я обдумываю пару методологий, на которые я не возражаю против обратной связи ...
Сохраните существующие классы моделей и установите кросс-отношения в NULL, прежде чем помещать их в мой ModelMap, чтобы не было какой-либо формы повторной ссылки (я думаю, что это HACK)
{"classX":{"id":"1", "classY":{"id":"2", "classX":null}}}
Воссоздайте классы JSON, аналогичные существующим моделям, без повторных ссылок на классы (но я думаю, что это означает, что они не будут так же многократно использоваться ... так как в конечном итоге я получу только classX-> classY, а не наоборот Я хотел свернуть другой путь для ответа на данные).
{"jsonClassX": {"id":"1", "jsonClassY":{"id":"2"}}}
Просто создайте его как стандартные отображения ModelMap для каждого вызова контроллера. Таким образом, нет понятия повторно используемого класса JSON, и он зависит от способа, которым контроллер создает и организует возвращаемые значения. Это кажется самым простым, но это означает, что код нельзя использовать повторно (кроме вырезания и вставки) ...
{"x":{"id":"1", "y":{"id":"2"}}} // for controller call 1
{"y":{"id":"2", "x":{"id":"1"}}} // for controller call 2
Так что это те варианты, с которыми я сейчас жонглирую, и я не прочь получить отзывы и советы о том, как это сделали другие.