net.sf.json.JSONNull["empty"])異常解決方案

之前遇到這個問題的情況是:給App做轉發接口的,當時的項目是存在和其他平臺交互出現的問題,所以他們那邊平臺比較大,東西封裝的比較多,可能他們的架構師當時沒有想到這個問題,所以導致出現這個bug,由於不能從他們平臺解決這個bug,所以只能那個平臺交接的時候自己來做處理
出現的異常:
HTTP Status 500 - Could not write JSON: Object is null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: net.sf.json.JSONObject["errorCode"]->net.sf.json.JSONNull["empty"])
出現的情況:

a).和A平臺交互,但是需要拿取A平臺查詢到的信息。
b).給別人做對外API,出現了此類問題

問題解決方案:

其實最主要的就是對他進行非空判斷就可以,方法有很多的,但是也都是不太一樣的,

方法一

實體類最上邊添加的是@JsonInclude(JsonInclude.Include.NON_NULL)
1、如果放在屬性上,如果該屬性爲NULL則不參與序列化 ;
2、如果放在類上,那對這個類的全部屬性起作用 ;

參數說明:

JsonInclude.Include.ALWAYS 默認
JsonInclude.Include.NON_DEFAULT 屬性爲默認值不序列化
JsonInclude.Include.NON_EMPTY 屬性爲 空(””) 或者爲 NULL 都不序列化
JsonInclude.Include.NON_NULL 屬性爲NULL 不序列化

方法二(不建議使用這個方法):

寫一個工具類,就是對實體類的屬性進行一個一個的非空判斷,這種方法不可取,非常的麻煩,對代碼影響還不是太好。

在實戰中學習,在快樂中成長

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章