Articles of jackson

Android JSONjackson教程

我正在开发使用JSON数据格式的android应用程序,我需要使用Jackson JSON library进行JSON handling 。 任何人都可以为Jackson建议一些好的教程。 我检查了jackson的官方网站,但网站上的教程有些令人困惑。 我只需要jackson的一些基础教程。

具有任意JSON密钥的Jackson ObjectMapper

我在Android项目中使用Jackson 1.9.5来解析JSON文件。 到目前为止,我没有遇到任何问题,可以使用以下代码解析文件: AssetManager mgr = getAssets(); ObjectMapper mapper = new ObjectMapper(); try { InputStream ifp = mgr.open(“detail_schema.json”); schema = mapper.readValue(ifp, DetailSchema.class); } catch (IOException e) { e.printStackTrace(); } DetailSchema类由原始types和类组合而成。 我现在遇到一个问题,我想解析一些JSON,如下所示: “fields”: { “Suburb”: “Paddington”, “State”: “NSW”, “Post Code”: “2074”, “Lollipop”: “Foo Bar Haz” } 我不可能事先知道地图键(他们可以是用户定义的)。 因此,我不确定关联的Java类应该是什么样子。 即,对于这个例子,它可能看起来像: public class MyClass { public String Suburb; […]

VFY:无法解析虚方法

我在我的Android应用程序中使用Jackson。 我在构建路径中添加了这两个jar: jackson-core-asl-1.0.0.jar jackson-mapper-asl-1.0.0.jar 但是,我在Logcat中一直看到这个: 11-24 18:25:15.093: I/dalvikvm(28842): Could not find method org.codehaus.jackson.map.ObjectMapper.getTypeFactory, referenced from method org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType 11-24 18:25:15.093: W/dalvikvm(28842): VFY: unable to resolve virtual method 17967: Lorg/codehaus/jackson/map/ObjectMapper;.getTypeFactory ()Lorg/codehaus/jackson/map/type/TypeFactory; 这只是在那种方法上。 我在类似的错误上搜索了StackOverflow,但它们都是: 库错误的版本(我的是正确的) 库不在/ libs中但在/ lib中(我将它们放在/ libs中) 我的Android版本是4.0.3。 我将它与Spring Android库结合使用。

JSON:jackson流解析器 – 它真的值得吗?

我在我正在编写的应用程序中大量使用JSON解析。 我所做的大部分工作已经使用Android内置的JSONObject库实现(是json-lib吗?)。 JSONObject似乎创建了JSON字符串中绝对所有内容的实例……即使我最终没有使用它们。 我的应用程序目前运行得很好,即使在G1上也是如此。 我的问题是:使用像Jackson这样的流解析器的速度和内存优势是否值得一试? 麻烦,我的意思是:据我所知,使用Jackson而不是内置库有三个缺点: 对外部库的依赖。 这会使你的.apk最终更大。 没什么大不了的。 你的应用程序更脆弱。 由于解析不是自动完成的,因此它更容易受到它正在解析的JSON文本的更改(可能我对此错了)。 编写代码以通过流解析器解析JSON是丑陋且乏味的。

使用Proguard时使用jackson-json库的问题

我在Android项目中使用jackson-json库,在使用Proguard进行混淆时导出应用程序时,出现以下错误: Proguard returned with error code 1. See console Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can’t find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can’t find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can’t find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can’t find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can’t find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry You should check if you need to specify additional program jars. […]

使用Proguard在使用Jackson库混淆时使用时出错

在仔细研究了与使用Proguard进行混淆的问题相关的各种问题之后,我已经到了我觉得自己可能是唯一一个遇到这个问题的人。 因此,post。 我有一个相当标准的Android应用程序,它使用基于JSON的REST调用来交换数据。 我利用Jackson库来解析JSON数据。 一切都运行得很完美,直到我们决定使用Proguard为我们的发布版本加入混淆。 在整理出回调相关问题的世界之后,我终于遇到了与jackson图书馆相关的问题。 基本上,行ObjectMapper om = new ObjectMapper() – 只是不起作用! 我一直在该行收到以下错误: Caused by: java.lang.ExceptionInInitializerError at org.codehaus.jackson.map.ObjectMapper.(Unknown Source) … 8 more Caused by: java.lang.NullPointerException at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.(Unknown Source) at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.(Unknown Source) … 9 more 在阅读了许多与包括外部库相关的其他post之后,让proguard忽略jackson库类,打开和关闭优化以及缩小标志,我现在只是无能为力。 为jackson的缘故,我在proguard.cfg文件中包含了各种各样的东西 – -dontskipnonpubliclibraryclassmembers -dontoptimize -dontshrink -libraryjars xtraLibs/joda-time-1.6.2.jar;xtraLibs/xml-apis.jar;xtraLibs/jsr311-api-0.8.jar;xtraLibs/stax2-api-3.0.0.jar;xtraLibs/httpmime-4.0.1.jar 其中,我已经切换了dontoptimize和dontshrink标志。 但是,结果总是一样的。 在我试图解决这个问题的所有时间里,我对Proguard图书馆的努力感到惊讶和敬畏。 只是当事情不起作用时,它们会有点混淆 。 Proguard版本 – 4.6

无法在Spring 3 REST Webservice中的START_ARRAY标记中反序列化对象的实例

我正在利用Spring提供的这个很酷的东西:Spring RESTWebService(spring的版本是3)。 如果我从浏览器访问URL,我可以看到JSON响应,但是从客户端端点(Android应用程序)iIreceive这个错误消息: Caused by: org.springframework.web.client.ResourceAccessException: I/O error: Can not deserialize instance of MyObject out of START_ARRAY token at [Source: org.apache.http.conn.EofSensorInputStream@4076e940; line: 1, column: 1]; nested exception is org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of MyObject out of START_ARRAY token at [Source: org.apache.http.conn.EofSensorInputStream@4076e940; line: 1, column: 1] at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:466) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:414) at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:234) at com.be.android.locateconsultants.resources.AsyncTaskRESTServiceCaller.doInBackground(AsyncTaskRESTServiceCaller.java:43) at […]

@IntDef Android支持与jackson反序列化的公告

使用JacksonAnnotations和Android支持注释。 我的POJO是: @JsonIgnoreProperties(ignoreUnknown = true) public class Schedule { public static final int SUNDAY = 0; public static final int MONDAY = 1; public static final int TUESDAY = 2; public static final int WEDNESDAY = 3; public static final int THURSDAY = 4; public static final int FRIDAY = 5; public static final int […]

如何使用Android Lollipop中的注释在Android Jackson Parsing中修复IncompatibleClassChangeError?

在我们的Android应用程序中,我们在模型中使用Jackson Annotations: @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = “templateType”, visible = true, defaultImpl = Default.class) @JsonSubTypes({ @Type(value = Subclass1.class, name = “tType1”) 我们使用object mapper解析json响应,其中klass是我们希望解析的目标文件的类: getObjectMapper().readValue(json, klass); 在Android Lollipop设备的罕见情况下,我们得到 java.lang.IncompatibleClassChangeError: Couldn’t find com.fasterxml.jackson.annotation.JsonSubTypes$Type.value. 完整堆栈跟踪: com.fasterxml.jackson.annotation.JsonSubTypes$Type.value at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:659) at java.lang.Class.getDeclaredAnnotations(Class.java:891) at com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveClassAnnotations(AnnotatedClass.java:300) at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.isIgnorableType(JacksonAnnotationIntrospector.java:103) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.isIgnorableType(BeanDeserializerFactory.java:844) at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:401) at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:305) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.createContextual(CollectionDeserializer.java:151) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.findDeserializer(StdDeserializer.java:634) at […]

如何设置Jackson JSON处理器的PROGUARD?

我正在为我的app使用Jackson JSON处理器。包括这个使用 compile ‘com.fasterxml.jackson.core:jackson-databind:2.4.2’ compile ‘com.fasterxml.jackson.core:jackson-annotations:2.4.2’. 我的proguard配置是。 ## BEGIN — Google Play Services proguard.txt -keep class * extends java.util.ListResourceBundle { protected java.lang.Object[][] getContents(); } # Keep SafeParcelable value, needed for reflection. This is required to support backwards # compatibility of some classes. -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } # Keep […]