[英]Jackson crash when try to map a JSON without an element of the class
我在使用Jackson映射對象時遇到問題。
當我映射有時缺少該類中的項目的JSON對象時,就會發生此問題。
我試圖找出如何設置配置,以便在JSON沒有類的所有字段時不會崩潰。
我已經嘗試過:
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或EMPTY時不能正常工作。
對於Jackson,您可以嘗試直接更改映射器的配置:
mapper.setSerializationInclusion(Include.NON_NULL);
但是我是否建議您查看另一個將JSON映射到POJO的庫? GSON和Genson (我個人最喜歡的)都執行相同的操作,但是速度更快且更容易。 看看這里的基准 ,他們比較Jackson,GSON和Genson的(反)序列化。
使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.