JSON ArrayList в Джерси - PullRequest
       8

JSON ArrayList в Джерси

3 голосов
/ 28 июля 2011

Я пытаюсь вернуть список из Джерси, который прекрасно работает в XML, но когда я иду выводить его как JSON, он заявляет: «Автор тела сообщения для класса Java ... и типа Java ...и MIME media type application / json не найден ".

Я не выполнил никаких настроек для работы со списками утилит, так как я думал, что jersey + jersey-json-1.9 обрабатывает эти вещи автоматически для JSON таким же образомэто для XML.

Кому-нибудь еще повезло с этим?

Ответы [ 4 ]

2 голосов
/ 23 декабря 2011

Я обнаружил, что мой первый удар по этой же проблеме не удался с этим сообщением об ошибке, и решение было, как указано в другом вопросе SO, Джерси: com.sun.jersey.server.impl.template.ViewableMessageBodyWriter : Я забыл добавить модуль jersey-json в свой проект.

1 голос
/ 29 июля 2011

Вам не нужны никакие обертки для списков с JSON, но вам нужно включить стиль «POJO mapping» поддержки JSON.

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

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

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

Примитивы и нулевой или одноэлементный массив List правильно сериализованы в документ JSON. Без настраиваемого распознавателя вы не получите правильные поля массива json [], если список Java пуст. Мой пост перечисляет все библиотеки .jar, которые вам нужны. Я использую самый последний архив Джерси v1.14.

0 голосов
/ 05 августа 2011

Ответил. Это потребовало создания провайдера. Код, указанный ниже:

@Provider
@Singleton
@Produces(MediaType.APPLICATION_JSON)
public class ContextResolver extends JacksonJaxbJsonProvider{

     public ContextResolver() throws Exception {
        super();
        ObjectMapper mapper = new ObjectMapper();
        setMapper(mapper);
    }
}
...