Articles of jackson

无法在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 […]

jackson JsonParseException:无效的UTF-8中间字节

当jackson引擎尝试解析来自服务器的json响应时,会发生此错误。 我使用Spring Android来串行/反序列化json中的对象。 此问题似乎与默认编码UTF-8有关。 有人知道如何告诉引擎它应该期待与UTF-8不同的东西,如UTF-16吗? HttpHeaders requestHeaders = createSomeHeader(); RestTemplate restTemplate = new RestTemplate(); HttpEntity requestEntity = new HttpEntity(requestHeaders); String url = “someurl” ResponseEntity arrayResponseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, MyObject[].class); 错误日志: Caused by: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Invalid UTF-8 middle byte 0x20 at [Source: org.apache.http.conn.EofSensorInputStream@44d397b0; line: 92, column: 42]; nested exception is org.codehaus.jackson.JsonParseException: Invalid […]

从响应中获取标头(Retrofit / OkHttp客户端)

我正在使用OkHttp客户端和Jackson的Retrofit进行Json序列化,并希望得到响应的标题。 我知道我可以扩展OkClient并拦截它。 但这是在反序列化过程开始之前。 我基本上需要的是将标题与反序列化的Json对象一起使用。

使用从Jackson创建的对象在Android上使用OrmLite保存子集合

我有一个REST服务,我正在从我的应用程序调用,它将一个JSON对象作为byte[]引入,然后将其转换为一个漂亮的嵌套对象集合 – 所有这些都可以正常工作。 我当时想要做的是使用OrmLite将这些对象持久化到SQLite存储,这就是事情开始崩溃的地方,因为据我所知,OrmLite不会自动持久化嵌套对象。 为简单起见,让我们删除我的实际function,并让我的对象简单地建模如下: @DatabaseTable(tableName = “parents”) public class Parent { @DatabaseField(id=true) private String name; @ForeignCollectionField // have to use Collection here because needs to be compatible with Jackson private Collection children; /* Getters and setters go here */ } @DatabaseTable(tableName = “children”) public class Child { @DatabaseField(id=true) private String name; @DatabaseField(foreign=true) private Parent […]

HttpMethod.Delete不能与Spring-Android的RestTemplate一起使用

我正在尝试使用HttpMethod的DELETE方法。 我正在使用的代码是 response = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Response.class); 我也使用JacksonJson来映射json。 删除function返回应该映射到Response类的json。 但是,调用上述行不起作用,并以500作为响应代码给内部服务器错误。 但是,相同的API在浏览器中与RESTClient一起工作,所以我猜这是我做得不正确的事情。

Jackson ObjectMapper冲突的setter定义(Android.Graphics.Bitmap)

我有这个方法: public static Response deserializeResponse(String jsonResponse) throws JsonParseException, JsonMappingException, IOException { ObjectMapper mapper = new ObjectMapper(); try{ return mapper.readValue(jsonResponse, Response.class); }catch(JsonParseException e){ e.printStackTrace(); }catch(JsonMappingException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } return null; } 这是class级回应: public static class Response { public String RequestType; public Data data; public void SetRequestType(String requestType) { this.RequestType = requestType; } @JsonIgnore […]

Android与Gradle(Java完成非零退出值2)

这是我的.gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.test.test" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/license.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/notice.txt' exclude 'META-INF/NOTICE' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' […]