2013-12-11 84 views
2

我在最新的android项目上使用Jackson 2.2.3。 我已经包括罐子(核心,databingin,注释)作为罐子到我的android libs文件夹。Jackson json解析器异常

但是,当读/解析json时,我得到这个错误。从一个对象写入json的作品。

我把这种:

objectMapper.readValue(的inputStream,SubscriptionWrapper.class);

com.fasterxml.jackson.databind.JsonMappingException:冲突的用于属性 “墙纸” 设定器定义:VS android.content.Context#setWallpaper android.content.Context#setWallpaper(1个PARAMS)(1个PARAMS )在 com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:272) com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:272) com.fasterxml.jackson .databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:247) com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeseria lizer(DeserializerCache.java:146) 在 com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:305) 在 com.fasterxml.jackson.databind.deser.std.StdDeserializer.findDeserializer(StdDeserializer。的java:634) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:438) 在 com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:298) ... at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2884) at com.fasterxml.jackson.databind.ObjectMapper.readValue(Objec tMapper.java:2034)

我的类看起来像这样

@JsonIgnoreProperties(ignoreUnknown = true) 
@JsonInclude(Include.NON_NULL) 
public class SubscriptionWrapper { 

    @JsonProperty("device") 
    private Device device; 

    @JsonProperty("subscriptions") 
    private List<Subscription> subscriptions; 

    public SubscriptionWrapper() { 
    } 

    public SubscriptionWrapper(Device device, List<Subscription> subscriptions) { 
     this.device = device; 
     this.subscriptions = subscriptions; 
    } 

    public Device getDevice() { 
     return device; 
    } 

    public void setDevice(Device device) { 
     this.device = device; 
    } 

    public List<Subscription> getSubscriptions() { 
     return subscriptions; 
    } 

    public void setSubscriptions(List<Subscription> subscriptions) { 
     this.subscriptions = subscriptions; 
    } 

} 

任何想法可能是错误的?我已经在其他项目中使用杰克逊没有任何问题。

+0

发布你的json。 – njzk2

+0

另外,什么是订阅,什么是设备? – njzk2

回答

2

妈,我找到了解决办法:

我的设备类有一个方法

public void setStatistics(Context c); 

,将被要求履行对用户设备的统计数据。

该方法从杰克逊调用,即使在应该被解析的json中不包含“统计”元素。 用@JsonIgnore注解该方法已解决该问题。

@JsonIgnore 
public void setStatistics(Context c) 

所以我必须注释每一个方法或配置杰克逊使用字段,而不是方法作为默认设置。

+0

我也遇到过这个问题,但只在三星S3(4.4)。 我在我的一个数据类中有一个资源成员。我必须在这个成员上使用'@ JSONIgnore'才能工作。 '@JsonIgnore 私人资源资源;'' – chris