2013-07-11 3 views
3

Я родом из Ruby и только что начал тестировать Spring и считаю его довольно приятным.Весенний шаблон для рендеринга JSON

Однако я привык к возможности настроить обработанную JSON вывода с библиотеками, как rabl и он чувствует себя очень неправильно выставлять внутренние модели прямо в JSON, как я теперь делать с аннотацией @ResponseBody и просто вернув модель.

Есть ли у кого-нибудь советы по библиотекам, подобным rabl, но для java/spring или существует ли простой способ сделать это с пружиной без ручной записи шаблонов в JSON?

ответ

2

Весна использует Джексона для сериализации JSON (de-). Взгляните на Jackson wiki; он описывает несколько способов настройки способа создания или интерпретации JSON.

Как я понимаю из вашего комментария, у вас есть пара настроек в виду.

  • Переименование поля может быть достигнуто путем аннотирования поля с @JsonProperty("name")
  • Не визуализации полей может быть достигнуто путем аннотирования поля с @JsonIgnore

Но они требуют вам прикоснуться к вашей модели. Насколько я знаю, вы не можете достичь этого, не изменив, по крайней мере, несколько классов моделей. В «Джексоне» есть концепция «views», но им по-прежнему требуется разместить аннотации на вашей модели. На практике я никогда не испытывал проблем с Java-классами, которые, кстати, были аннотированы как JPA, так и аннотациями Джексона.

Наконец, вы можете рассмотреть возможность создания двух версий вашей модели - той, которая поступает из вашей базы данных (или любого другого источника данных), и того, который используется для взаимодействия с пользовательским интерфейсом. Однако для этого потребуется прокладка трансформаторов или преобразователей. Независимо от того, является ли это вариантом, зависит от вас.

+0

Да, я осмотрелся и узнал об этом тоже, но насколько я понимаю, это позволяет мне делать глобальные вещи, такие как замена нуля пустой строкой или наоборот. Что я ищу - это способ определения представлений, которые преобразуют модель в JSON, и позволяет мне делать некоторые преобразования, такие как rabl (например, только рендеринг определенных полей и переименование полей и вытягивание связанных объектов). Я знаю, что есть аннотации, которые вы можете наложить на модели, чтобы повлиять на выход jackson, но я хотел бы сделать это на виду для просмотра, и я не хочу прикасаться к моим моделям для этого. – Andreas

Смежные вопросы