杰克逊json解析器例外

时间:2013-12-11 15:16:30

标签: java android json data-binding jackson

我在最新的Android项目中使用Jackson 2.2.3。 我把罐子(核心,数据绑定,注释)作为罐子包含在我的android libs文件夹中。

但是在阅读/解析json时我得到了这个错误。从对象写json。

我称之为:

objectMapper.readValue(inputStream,SubscriptionWrapper.class);

  

com.fasterxml.jackson.databind.JsonMappingException:冲突   属性的定位器定义"壁纸":   android.content.Context#setWallpaper(1 params)vs   android.content.Context#setWallpaper(1 params)at   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.findValueDeserializer(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)   ... 在   com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2884)   在   com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.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;
    }

}

知道可能出现什么问题吗?我在其他项目中使用过jackson而没有任何问题。

1 个答案:

答案 0 :(得分:2)

该死的,我找到了解决办法:

我的Device类有一个方法

public void setStatistics(Context c);
将调用

来完成有关用户设备的统计信息。

该方法是从jackson调用的,即使在应该被解析的json中也不包含&#34;统计信息&#34;元件。 用@JsonIgnore注释方法解决了这个问题。

@JsonIgnore
public void setStatistics(Context c)

所以我必须注释每一个方法或配置jackson使用字段而不是默认的pasing方法。