Я использую Джерси для создания REST API для сервиса. Я хотел бы иметь возможность принимать и возвращать как JSON, так и XML, и это в основном работает, но мне не нравится «отображенный» вариант JSON по умолчанию, который Джерси любит выплевывать.
Я знаю о более новой «естественной» нотации (из http://jersey.java.net/nonav/documentation/latest/json.html,, которую я приведу подробно, потому что она делает очевидной проблему со стандартной «отображенной» нотацией):
После некоторого использования отображенной нотации JSON стало очевидно, что
нужно настроить все различные вещи вручную, может быть немного
проблематичным. Чтобы избежать ручной работы, новая, естественная нотация JSON
была представлена в Джерси версии 1.0.2. С натуральной нотацией, Джерси
автоматически выяснит, как отдельные элементы должны быть
обработан, так что вам не нужно делать какие-либо инструкции
конфигурации. Массивы и списки Java отображаются в массивы JSON, даже
для одноэлементных случаев. Числа Java и логические значения правильно
сопоставлены с числами JSON и логическими значениями, и вам не нужно беспокоиться
с атрибутами XML, как и в JSON, они сохраняют исходные имена
и хотел бы использовать его везде, но я не смог понять, как это сделать. Я инстанцирую / настраиваю Джерси с помощью XML-файлов конфигурации Tomcat - я использую то, что я считаю обычным танцем с тегами servlet / servlet-class / init-param - но я не смог найти документацию о том, как это сделать оттуда можно указать параметры JSONConfiguration.
Я также пытался реализовать свой собственный ContextResolver, который применяет JSONJAXBContext, который я создал из Java-кода, где я могу применить JSONConfiguration.natural () (пример этого выглядит так: этот ответ ). Это работает, но только для типов, которые я явно перечисляю в этом коде и передаю конструктору JSONJAXBContext. Этот дополнительный код не только предназначен для написания и поддержки, а также изменения, если я добавляю больше классов данных, но он не работает для таких вещей, как List.
Есть ли способ сказать Джерси просто использовать естественную запись вместо отображенной записи всегда и для всех типов?