android-在不使用批注的情况下使用Jackson JSON处理器

android-在不使用批注的情况下使用Jackson JSON处理器,第1张

概述我有一个仅包含和xsd文件的软件包,用于生成(通过JAXB)与我们的服务器和客户端应用程序相关的共享类.因此,这些类包含XML批注.一个客户端是一个Android应用程序.我还想在这里使用这些类进行JSON反序列化,因为我与提供JSON(使用Jersey/Jackson)的REST服务进行通信.我尝试在Androi

我有一个仅包含和xsd文件的软件包,用于生成(通过JAXB)与我们的服务器和客户端应用程序相关的共享类.因此,这些类包含XML批注.

一个客户端是一个Android应用程序.我还想在这里使用这些类进行JsON反序列化,因为我与提供JsON(使用Jersey / Jackson)的REST服务进行通信.

我尝试在AndroID上使用Jackson(版本1.7.2),如下所示:

ObjectMapper mapper = new ObjectMapper();mapper = mapper.configure(DeserializationConfig.Feature.USE_ANNOTATIONS,                false);mapper = mapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS,                false);Foobar someObject = (Foobar) mapper.readValue(JsonString, Foobar.class);

我虽然配置MAPPER应该避免使用注释,但是我仍然得到

02-07 09:30:18.631: ERROR/AndroIDRuntime(447): java.lang.NoClassDefFoundError: javax.xml.bind.annotation.XmlAccessorType02-07 09:30:18.631: ERROR/AndroIDRuntime(447):     at java.lang.class.getDeclaredAnnotations(Native Method)02-07 09:30:18.631: ERROR/AndroIDRuntime(447):     at org.codehaus.jackson.map.introspect.AnnotatedClass.resolveClassAnnotations(AnnotatedClass.java:292)02-07 09:30:18.631: ERROR/AndroIDRuntime(447):     at org.codehaus.jackson.map.introspect.AnnotatedClass.construct(AnnotatedClass.java:139)

谁知道阻止Jackson解析注释的诀窍.

谢谢
  克劳斯

解决方法:

我目前的调查得出以下结果:

使用DeserializationConfig.Feature.USE_ANNOTATIONS属性(设置为false)将使JACKSON DeserializerConfig类使用nopAnnotationIntrospector.然后,将使用此nopAnnotationIntrospector解析类的注释. nopAnnotationIntrospector将在对类的任何注释的每个isHandled请求上返回false-实际上,将不会在进一步处理中使用此注释.

因此-系统仍然“检查”注释-在这种情况下,注释必须位于类路径上.由于AndroID不提供任何jaxb-API注释,因此会导致NoClassDefFoundError.

我期望USE_ANNOTATIONS = false将使JACKSON完全忽略任何注释-但不幸的是,事实并非如此.现在,我将使用Jackson流媒体API来解析JsON字符串,而不是使用JACKSON数据绑定功能.

总结

以上是内存溢出为你收集整理的android-在不使用批注的情况下使用Jackson JSON处理器全部内容,希望文章能够帮你解决android-在不使用批注的情况下使用Jackson JSON处理器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1095378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存