泽西岛:无法从字符串中反序列化ArrayList的实例

泽西岛:无法从字符串中反序列化ArrayList的实例,第1张

泽西岛:无法从字符串中反序列化ArrayList的实例

经过漫长的一天,又是…阅读了许多Wiki和常见问题解答之后,它终于可以工作了。

我做了什么:

  1. 使用杰克逊
  2. 强制Jackson提供商使用
  3. 定义自定义反序列化器
  4. 激活ACCEPT_SINGLE_VALUE_AS_ARRAY标志
  5. 修复依赖关系

故事:

我正在使用默认情况下使用(I belive)jaxb的Jersey 1.13。

我将其更改为 使用杰克逊

<init-param>    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>    <param-value>true</param-value></init-param>

如以下所述:

这使我的球衣使用杰克逊,但问题仍然存在。杰克逊还不能反序列化数组。

我强迫使用 Jackson提供商

<init-param>    <param-name>com.sun.jersey.config.property.packages</param-name>    <param-value>        your.project.packages;        org.prehaus.jackson.jaxrs</param-value></init-param>

是必要的步骤,但还不够。必须激活 ACCEPT_SINGLE_VALUE_AS_ARRAY 标志。

ObjectMapper objectMapper;objectMapper = new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

我需要定义 自定义反序列化器

public class MyResolver implements ContextResolver<ObjectMapper> {@Override    public ObjectMapper getContext(final Class<?> objectType) {        ...         return objectMapper;    }}

为了做到这一点:

定制对象映射器

完成所有这些 *** 作后,它仍然无法正常工作…

那讨论 依赖问题 ..

这反映了我的问题, Jackson v1.9.2 附带了 Jersey v1.13我需要Jackson v2.0

我删除了jersey-json的依赖项,因为它包括杰克逊1.9.2:

<dependency>    <groupId>com.sun.jersey</groupId>    <artifactId>jersey-json</artifactId></dependency>

并直接声明依赖项:

<dependency>    <groupId>com.fasterxml.jackson.jaxrs</groupId>    <artifactId>jackson-jaxrs-json-provider</artifactId></dependency>

参考:

jackson-jaxrs-json-provider

注意: 此更改将删除Jersey的使用Jaxb或Jettison的功能。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5054603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存