Я использую библиотеку Restlet для сервера WS, и я недавно перешел с XStream / Jettison на Джексона в качестве сериализатора / десериализатора JSON из-за некоторых проблем.
Первый недостаток заключается в том, что мой ArrayList (ранее Vector с Jettison) не переносит список профилей при сериализации, а JSON вместо «Profile: [{firstProfile}, {secondProfile}]» »выглядит так: [{firstProfile}, {secondProfile}]
Я могу решить эту проблему на клиенте, говоря вручную, что является правильным отображением, но я бы предпочел использовать подход KVC.
Я посмотрел вокруг, и кажется, что этоизвестная проблема: http://wiki.fasterxml.com/JacksonPolymorphicDeserialization (5.1 Отсутствует информация о типах при сериализации), которую он предлагает:
- Использовать массивы вместо списков
- Список подклассов с использованием классаMyPojoList расширяет ArrayList {}
- Принудительное использование определенного корневого типа
, самый простой способ вернуть массив «Profile [] profile», но, похоже, это не так.orking, перед тем как попробовать другие решения, которые я перепроверил, и кажется, что вы можете использовать @XmlRootElement (name = "Profile"), чтобы обернуть корневой элемент JSON: http://jira.codehaus.org/browse/JACKSON-163?focusedCommentId=213588&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-213588
, поэтому для использования аннотаций JAXBс Джексоном вам необходимо настроить objectMapper: http://wiki.fasterxml.com/JacksonJAXBAnnotations
, но в рестлете для этого вам необходимо переопределить createObjectMapper для передачи пользовательского конвертера (см .: http://restlet -discuss.1400322.n2.nabble.com / Set-custom-objectMapper-to-Jackson-Extension-td6287812.html и http://restlet -discuss.1400322.n2.nabble.com / Jackson-Mix-in-Annotations-td6211060.html # a6231831 )
Это то, что я сейчас пытаюсь!Вопрос в том, есть ли более простой способ добиться этого?
Спасибо !!