Первый раз здесь, но долго читатель ... Я вращал свои колеса на этом и с трудом находил способ кое-что сделать, используя Jackson и Wink, чтобы очертить набор объектов, которые отправляются над. По какой-то причине HashSet в этом не может быть корректно отображен. Вот пример: у меня есть объект Foo, который является сущностью в DAO. Я могу сериализовать и охарактеризовать отдельный объект Foo, который содержит Sets и List и т. Д., Без проблем. Вот мой Foo объект:Deserlize Set in jackson via Rest
[{"uuid":"1","version":1,"salutation":null,"firstName":"Random1","lastName":"Dude1"},
{"uuid":"2","version":1,"salutation":null,"firstName":"Random2","lastName":"Dude2"}]
То, что я пытался сделать это в службе Rest с помощью Wink и Джексон. Пример ниже:
@Resource
BarManager barManager
@PUT
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Bar addFoosForBar(@PathParam("id") String id, Set<Foo> foos) {
Bar bar = barManager.getById(id);
bar.addFoos(foos);
return barManager.update(bar);
}
Это пример код и barManager.getById (ID) является находкой ресурсом (@Resource аннотированным) объекты извлекает бар. Методы «addFoos» добавляют набор Foo to Bar или в этом случае добавляют foos к рассмотренной панели. В этом коде foos в службе отдыха возвращаются, и я могу проверить foos, и он выглядит точно как объект json, но я получаю исключение »java.lang.ClassCastException: java.util.LinkedHashMap нельзя отнести к com.model.Foo «Когда я пытаюсь использовать foos в качестве набора, т. Е. Пытаюсь выполнить итерацию и т. Д. Мой вопрос: может ли Джексон десериализовать набор объектов, которые являются сущностями, или вам нужно определить отдельный тип объекта, который представляет собой набор объектов, конкретно как карту для использования Джексоном? Подводя итог, как Джексон учитывает HashSets определенных объектов для десериализации? Не удалось зажечь плавкий предохранитель в направлении, чтобы принять это, потому что это должно быть прямо, что я просто хочу десериализовать набор и иметь возможность манипулировать им в службе отдыха как POJO.
Что вы ожидаете? Как должна быть вызвана ваша функция-пример? Укажите формат ввода, например, например, запрос JSON. –
Добавлены некоторые пояснения к этому сервису отдыха, но просто нужно обновить панель с набором foos, чтобы ответить на ваш первый вопрос. Это вызывается через URL-адрес по адресу @Path ("{id]"), в этом случае служба отдыха. Формат ввода выше в полезной нагрузке, переданной от клиента. Если я проверяю foos внутри JVM, он выглядит точно так же, как и выше JSON-объект. – aheschel