之前遇到這個問題的情況是:給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 不序列化
方法二(不建議使用這個方法):
寫一個工具類,就是對實體類的屬性進行一個一個的非空判斷,這種方法不可取,非常的麻煩,對代碼影響還不是太好。
在實戰中學習,在快樂中成長