Джерси JSON сортировка пустых списков - PullRequest
4 голосов
/ 24 сентября 2010

У нас есть список объектов Java, который маршалируется через JSON и создается Джерси.

Список называется «строками». Когда есть данные у нас есть:

{"records":"1","page":"1","total":"1","rows":[{"id":"692334","cell":["ECS","D","201009","","0","ABCD","11","11","","201009"]}]}

Когда данных нет:

{"page":0,"records":0,"total":0}

Как мы можем заставить Джерси включать поле rows, даже если список имеет размер 0? То, что мы хотим, это:

{"page":0,"records":0,"total":0,"rows":[]}

Обратите внимание, что мы уже используем JAXB ContextResolver, чтобы убедиться, что JSON верен для одной строки. Не уверен, сможем ли мы настроить этот преобразователь для решения нашей проблемы.

Ответы [ 3 ]

5 голосов
/ 26 сентября 2010

Используйте поставщика Jackson JAX-RS вместо альтернатив (badgerfish / jettison), который не выполняет преобразование XML в JSON.Отсутствие массива, скорее всего, связано с этим преобразованием.Есть несколько способов настроить это (список рассылки должно быть несколько), и последние версии могут предоставлять его напрямую через API Джерси.

0 голосов
/ 27 сентября 2012

Мне удалось устранить «ошибку» массива JSON в библиотеке json на Джерси.Секретным ингредиентом является прежде всего упомянутое волшебство JSONConfiguration и ContextResolver.См. Мой следующий пост, в котором приведен пример полного кода, настроенный ContextResolver и остальная часть Класс приложения может быть несколько нечеткой логикой на первый взгляд.

Как сериализовать примитивы Java с использованием Jersey REST

  • массив json для нулевых или одноэлементных списков Java
  • примитивные целочисленные или логические поля без кавычек
0 голосов
/ 19 января 2012

Может быть, это поможет вам: http://jersey.java.net/nonav/documentation/latest/json.html#d4e903

кажется, что некоторые проблемы с массивами можно решить, используя что-то вроде этого:

JSONConfiguration.mapped().arrays("yourArrayName").build()

По крайней мере, это решает проблему, когда список содержит только 1 элемент, он также форматируется как массив JSON.

...