Передача объекта Java в службу RESTful

#java #rest #jackson2

#java #rest #jackson2

Вопрос:

Я передаю объект Java веб-службе, которая принимает json, используя HttpURLConnection . Используя com.fasterxml.jackson преобразование объекта в строку json и последующую запись его в выходной поток, служба отлично работает для простых фиктивных POJOS, но приложение прерывается, когда я использую сложный объект, который я изначально намеревался отправить, с консолью, заполненной исключениями, такими как StackOverflow и бесконечный беспорядок

в com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690 ) в com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)

Распространенные решения похожи на аннотирование класса аннотацией json. Есть ли какой-либо другой способ обойти это, например, использовать другой accept: content-type для веб-сервиса (отличный от json или xml, поскольку они требуют аннотированных объектов) или что-то подобное?

Комментарии:

1. Отправьте объект, структура которого соответствует структуре JSON, ожидаемой службой. Если ваш исходный объект не соответствует этой структуре, то либо он может быть аннотирован, чтобы соответствовать ему, либо вы можете скопировать соответствующее состояние в объект, структура которого соответствует, то есть в DTO.

Ответ №1:

Вы можете использовать аннотации mixin, чтобы предоставить Джексону подсказки о том, как сериализовать ваши данные, не загрязняя POJO ненужными зависимостями.

Вот ссылка на статью документации, в которой есть хороший пример:http://wiki.fasterxml.com/JacksonMixInAnnotations