java - jackson json 解析器异常

标签 java android json data-binding jackson

我在我最新的 android 项目上使用 Jackson 2.2.3。 我已将 jar(核心、数据绑定(bind)、注释)作为 jar 包含到我的 android libs 文件夹中。

但是我在读取/解析 json 时遇到这个错误。从一个对象写 json 的作品。

我称之为:

objectMapper.readValue(inputStream, SubscriptionWrapper.class);

com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "wallpaper": 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) at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:305) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.findDeserializer(StdDeserializer.java:634) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:438) at 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(ObjectMapper.java:2034)

我的类(class)是这样的

@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 没有任何问题。

最佳答案

该死,我找到了解决方案:

我的设备类有一个方法

public void setStatistics(Context c);

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

该方法是从 jackson 调用的,即使在应该解析的 json 中不包含“statistics”元素。 用@JsonIgnore注解方法解决了问题。

@JsonIgnore
public void setStatistics(Context c)

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

关于java - jackson json 解析器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522827/

相关文章:

java - jquery/Angular 调度器实现

json - 为什么struct field的格式串总是小写

javascript - 过滤 JavaScript 对象

java - 蓝牙连接失败 : read failed, socket might closed or timeout, read ret: -1

android - 启动 Activity 的服务与其通信的最佳方式

python - 根据字典中的另一个值从字典列表中检索一个值

c# - SecureRandom 漏洞也适用于 BouncyCaSTLe C#

java - 添加两条边 - JGraphT

java - 仅让类的一部分等待执行,无论是否有线程?

android - 样式化 android.support.v7.preference.SeekBarPreference