我在我最新的 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/