Articles of jackson

用Jackson反序列化genericstypes

我正在努力创建一个使用Jackson来反序列化POJO的课程。 看起来像这样…… public class DeserialiserImp implements Deserialiser { protected ObjectMapper objectMapper = new ObjectMapper(); @Override public T get(String content, Class clazz) throws IOException { return (T) objectMapper.readValue(content, clazz); } @Override public List getList(String content, Class clazz) throws IOException { return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz)); } } 我有2个关于此实现的问题。 第一个是我将类types传递给方法,因此objectmapper知道应该反序列化的types。 使用generics有更好的方法吗? 同样在get方法中,我将一个从objectMapper返回的对象转换为T.这似乎是特别讨厌的方式,因为我必须在这里强制转换T然后我还必须从调用它的方法中转换对象types。 我在这个项目中使用Roboguice,如果我可以通过注入更改types然后注释我需要它返回的Generictypes的对象,那将会很好。 我读到了关于TypeLiteral并想知道它是否可以解决这个问题?

org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段“id”(类标准),未标记为可忽略

当我尝试将Json解析为Java pojo对象时,我收到此exception。 对象图有几个对象。 org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field “id” (Class Criteria), not marked as ignorable 我想看看,在这种情况下会出现这种exception,问题可能出在对象图中吗? 我在我的android项目中这样做我在这里没有使用注释我不知道如何将此字段添加为可忽略的。

为什么Android垃圾会用Jacksons ObjectMapper收集这么多次?

我的Android应用程序有一个自定义的AsyncTask,可以对一个对象列表进行rest调用。 我正在使用Jackson将我的响应转换为Java,当我通过ObjectMapper.readValue()映射Json时,我看到了大约30个垃圾收集调用。 有趣的是,如果我在第二次,第三次,第四次(通过选择刷新按钮)进行相同的呼叫,则只有一次GC呼叫。 任何想法为什么每次我启动Android应用程序时第一次调用都会发生这种情况? AsyncTask.java doInBackground() { HttpGet request = new HttpGet(url); HttpClientUtil.setJsonAccept(request); HttpResponse response = httpClient.execute(request); HttpEntity responseEntity = new BufferedHttpEntity(response.getEntity()); // Call that garbage collect 30+ times the first exectution ArrayList responseCollection = mapper.readValue(responseEntity.getContent(), new TypeReference<ArrayList>(){}); return responseCollection; } LogCat输出 07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms 07-10 11:05:13.484: […]

使用Robospice和Scala在ORMLite中保存外来集合

我们在Scala上使用Android上的Robospice和ORMLite模块进行持久化,并且在将外部集合保存到数据库时遇到了困难。 数据正在正确接收(即我们正在使用几个post正确地解释和解释用户)但是当要将数据保存到缓存时,它无法保存外部集合。 我们一直在通过控制台获得此exception,但正如您所看到的,用户确实有一个setter和getter,所以我们不确定问题是什么。 java.lang.IllegalArgumentException: Could not find appropriate set method for private java.util.Collection scaloid.scala_test.models.User.posts at com.j256.ormlite.field.DatabaseFieldConfig.findSetMethod(DatabaseFieldConfig.java:576) at com.octo.android.robospice.persistence.ormlite.InDatabaseObjectPersister.saveAllForeignObjectsToCache(InDatabaseObjectPersister.java:192) at com.octo.android.robospice.persistence.ormlite.InDatabaseObjectPersister$1.call(InDatabaseObjectPersister.java:96) at com.octo.android.robospice.persistence.ormlite.InDatabaseObjectPersister$1.call(InDatabaseObjectPersister.java:91) at com.j256.ormlite.misc.TransactionManager.callInTransaction(TransactionManager.java:168) at com.j256.ormlite.stmt.StatementExecutor.callBatchTasks(StatementExecutor.java:553) at com.j256.ormlite.dao.BaseDaoImpl.callBatchTasks(BaseDaoImpl.java:633) at com.j256.ormlite.dao.RuntimeExceptionDao.callBatchTasks(RuntimeExceptionDao.java:534) at com.octo.android.robospice.persistence.ormlite.InDatabaseObjectPersister.saveDataToCacheAndReturnData(InDatabaseObjectPersister.java:91) at com.octo.android.robospice.persistence.CacheManager.saveDataToCacheAndReturnData(CacheManager.java:77) at com.octo.android.robospice.request.DefaultRequestRunner.saveDataToCacheAndReturnData(DefaultRequestRunner.java:265) at com.octo.android.robospice.request.DefaultRequestRunner.processRequest(DefaultRequestRunner.java:172) at com.octo.android.robospice.request.DefaultRequestRunner$1.run(DefaultRequestRunner.java:216) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 这是用户模型。 @JsonIgnoreProperties(ignoreUnknown = true) @DatabaseTable(tableName […]

使用Proguard时,getDeclaredAnnotation崩溃

我有一个Android应用程序,包含10个库项目和一个应用程序项目。 其中2个库项目使用jackson库作为依赖项。 这是来自build.gradle的snipet compile ‘com.fasterxml.jackson.core:jackson-databind:2.4.4’ compile ‘com.fasterxml.jackson.core:jackson-core:2.4.4’ compile ‘com.fasterxml.jackson.core:jackson-annotations:2.4.4’ 现在我的应用程序崩溃,出现以下exception at java.lang.Class.getDeclaredAnnotations(Native Method) at com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveClassAnnotations(AnnotatedClass.java:308) at com.fasterxml.jackson.databind.introspect.AnnotatedClass.getAnnotation(AnnotatedClass.java:173) at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.isIgnorableType(JacksonAnnotationIntrospector.java:97) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.isIgnorableType(BeanDeserializerFactory.java:870) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.filterBeanProps(BeanDeserializerFactory.java:635) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:527) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:270) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:168) at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:399) at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:348) at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:261) at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:241) at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:394) at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3169) at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3033) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1652) 在崩溃之前,我可以在日志中看到以下行 Class resolved by unexpected DEX: Lcom/vocalocity/Administration/api/support/extensionKit/ExtkitConfig;(0x41ac7088):0x7acd1000 ref […]

警告:此类可能是由损坏的编译器生成的

我已将Jacson libs添加到我的android项目中,现在我在控制台中收到了这样的警告: 警告:忽略没有关联的EnclosingMethod属性的匿名内部类的InnerClasses属性。 (这个类可能是由一个破碎的编译器产生的。) 我试图重新编译库,但它没有帮助。 当我从项目中删除这些库时,警告消失了。 设备上的一切都运行良好,但这让我烦恼;) 你知道任何解决方案吗? 我正在使用Eclipse。

org.codehaus.jackson.JsonParseException:意外字符(”(代码65279 / 0xfeff)):预期有效值

我正面临一个奇怪的问题,我对Android和Json都很陌生。 我正在使用RESTful WCF来显示像这样的json响应: {“StatusCode”:200,”Message”:””,”Result”:{“Agencies”:[],”Areas”:[{“id”:11,”area_name”:”area 10″,”description”:”updated 10″,”active”:true},{“id”:12,”area_name”:”Area 11″,”description”:”temp 11″,”active”:true},{“id”:13,”area_name”:”Area 12″,”description”:”temp12″,”active”:true},{“id”:14,”area_name”:”area 13″,”description”:”temp 13 3″,”active”:true},{“id”:7,”area_name”:”Area 6″,”description”:”temp6″,”active”:true},{“id”:8,”area_name”:”area 7″,”description”:”temp7″,”active”:true},{“id”:9,”area_name”:”area 8″,”description”:”temp 8″,”active”:true},{“id”:10,”area_name”:”area 9″,”description”:”temp 9″,”active”:true},{“id”:1,”area_name”:”area1″,”description”:”temp”,”active”:true},{“id”:3,”area_name”:”area2″,”description”:”temp2″,”active”:true},{“id”:4,”area_name”:”area3″,”description”:”asdddasdsa”,”active”:true},{“id”:5,”area_name”:”area4″,”description”:”dasdassad”,”active”:true},{“id”:6,”area_name”:”area5″,”description”:”temp5″,”active”:true}],”Districts”:[{“id”:5,”district_name”:”District 5″,”district_code”:”1″,”description”:”temp 5″,”area_id”:8,”area_name”:”area 7″,”active”:true},{“id”:4,”district_name”:”district 4″,”district_code”:”2″,”description”:”temp 4″,”area_id”:8,”area_name”:”area 7″,”active”:true},{“id”:1,”district_name”:”district 1″,”district_code”:”1″,”description”:”descrp”,”area_id”:10,”area_name”:”area 9″,”active”:true},{“id”:2,”district_name”:”district 2″,”district_code”:”1″,”description”:”descrp”,”area_id”:10,”area_name”:”area 9″,”active”:true},{“id”:3,”district_name”:”district 3″,”district_code”:”1″,”description”:”temp 3″,”area_id”:5,”area_name”:”area4″,”active”:true}],”FacilityOccupacies”:[{“id”:1,”facility_name”:”C”,”description”:”Computer facility”,”active”:true},{“id”:2,”facility_name”:”CA”,”description”:”Adult correctional facility”,”active”:true},{“id”:3,”facility_name”:”CJ”,”description”:”Juvenile correctional facility”,”active”:true},{“id”:4,”facility_name”:”GS”,”description”:”Garage for operations support, including vehicle maintenance, repair or fuel depot”,”active”:true},{“id”:5,”facility_name”:”GP”,”description”:”Garage for parking”,”active”:true},{“id”:6,”facility_name”:”I”,”description”:”Light industrial facility”,”active”:true},{“id”:7,”facility_name”:”L”,”description”:”Library”,”active”:true},{“id”:8,”facility_name”:”M”,”description”:”Medical facilities such as clinics, infirmaries or […]

jackson无法在Android上加载JDK7types

我在我的Android应用程序中使用Jackson 2.8.2来反序列化JSON。 反序列化本身可行,但是,我可以在应用程序日志中看到以下警告: Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added Proguard已禁用, sourceCompatibility设置为’1.7′ 。 如何在构建中添加这些看似缺失的types?

Jackson Parser的模型类解析大写属性

我有一个json文件,如下所示: { “ANIMALS”: { “TYPE”: “MAMMAL”, “COLOR”: “BLACK”, “HEIGHT”: “45”, } } 但是我找不到属性错误。 如果我把它改成动物(小写)。 它工作正常。 任何人都可以建议我这个样本json文件的模型类,它将被正确解析。

jackson无法反序列化为ForeignCollection(Ormlite)

我有问题反序列化嵌套的json数据。 我使用Ormlite来保存数据,并使用Spring / Jackson(2)的组合来获取数据。 在Ormlite将其持久化之前,对象的集合/列表必须是ForeignCollection接口。 我已经阅读了其他几个Stackoverflowpost( 1,2,3 ),但没有一个有明确的解决方案。 这是我的一些代码: @ForeignCollectionField(eager = true) @JsonProperty(“images”) private ForeignCollection images; 我试过添加@JsonDeserialize(as=BaseForeignCollection.class)没有任何运气。 将ForeignCollection更改为Collection将使Jackson高兴并解析数据,但之后它将不会访问数据库。 有任何想法吗?