Java Jackson在尝试映射没有类元素的JSON时崩溃
我在使用Jackson映射对象时遇到问题 当我映射一个JSON对象时会出现问题,该对象有时会从类中丢失一个项 我试图找出如何设置配置,以便在JSON没有类的所有字段时不会崩溃 我已经试过了:Java Jackson在尝试映射没有类元素的JSON时崩溃,java,android,json,jackson,mapping,Java,Android,Json,Jackson,Mapping,我在使用Jackson映射对象时遇到问题 当我映射一个JSON对象时会出现问题,该对象有时会从类中丢失一个项 我试图找出如何设置配置,以便在JSON没有类的所有字段时不会崩溃 我已经试过了: MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @JsonIgnoreProperties(ignoreUnknown = true) 这就是错误: com.fasterxml.jackson.dat
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@JsonIgnoreProperties(ignoreUnknown = true)
这就是错误:
com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple type, class com.non.real.package.Like] value failed: null (through reference chain: com.non.real.package.CardFeed["likes"]->com.non.real.package.CardLikes["likes"]->java.util.ArrayList[0])
"likes": {
"count": 0,
"likes": []
}
尝试不同的解决方案我发现
Like
对象扩展了ActiveAndroid
的类Model
。移除那个“扩展”,它就可以正常工作了。我认为Model
类在有NULL或空值时无法正常工作。对于Jackson,您可以尝试直接更改映射器的配置:
mapper.setSerializationInclusion(Include.NON_NULL);
但是我可以建议您查看另一个库来将JSON映射到POJO吗?和(我个人最喜欢的)都是一样的,但是速度更快,也更容易。看看这里,他们比较了杰克逊、格森和根森的(反)系列化
使用Genson,跳过空值非常容易:
private static final Genson gensonSkipNulls = new Genson.Builder().setSkipNull(true).create();
/**
* Deserializes JSON into a Java object.
*
* @param json The JSON to deserialize.
* @param superclass The model to deserialize the JSON into.
* @return An object that is an instanceof superclass.
*/
public Object deserialize(final String json, final Class superclass) {
return genson.deserialize(json, superclass);
}
发布您收到的错误。错误已发布