2013-12-11 112 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