java - spring返回json如何判斷會(huì)返回null還是empty?
問(wèn)題描述
利用spring提供的@ResponseBody可以非常方便的返回的json對(duì)象。
但是有一個(gè)問(wèn)題是,有時(shí)候無(wú)法判斷@ResponseBody會(huì)返回empty('')還是null,題主大致觀察了一下。好像對(duì)于java中的String不管是null還是'',最終通過(guò)json返回的都是'',而對(duì)于Object,都會(huì)返回null,而對(duì)于int型數(shù)據(jù)都會(huì)返回0。
請(qǐng)問(wèn)上面的結(jié)論是否正確?
問(wèn)題解答
回答1:這個(gè)跟你的pojo中的實(shí)例變量類(lèi)型和使用的json庫(kù)有關(guān)(json庫(kù)可以設(shè)置對(duì)null如何處理)
回答2:1.返回POJO時(shí)可以將業(yè)務(wù)數(shù)據(jù)封裝,比如封裝成JSONResult類(lèi),里面有code,msg,data其中data是業(yè)務(wù)數(shù)據(jù)(也就是POJO實(shí)例),code是狀態(tài)碼,msg是說(shuō)明,這樣當(dāng)業(yè)務(wù)數(shù)據(jù)為空的時(shí)候,返回錯(cuò)誤碼就好,這樣返回結(jié)果依然是json格式數(shù)據(jù),方便接口調(diào)用者處理。
2.直接返回JSON格式數(shù)據(jù),利用fastjson或者net.sf.json,直接返回JSONObject對(duì)象,將業(yè)務(wù)數(shù)據(jù)手動(dòng)或者自動(dòng)填入JSONObject對(duì)象中。
回答3:如果使用的Jackon庫(kù)的話可以再pojo上面注解@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL),這樣的話如果某個(gè)屬性值為null或者'',則序列化為json的時(shí)候不會(huì)包含key
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. javascript - 用js實(shí)現(xiàn)遠(yuǎn)程js調(diào)用時(shí)出現(xiàn)時(shí)間機(jī)制問(wèn)題怎樣解決?4. javascript - 請(qǐng)教空白文本節(jié)點(diǎn)的問(wèn)題5. 刷新頁(yè)面出現(xiàn)彈框6. ios - 類(lèi)似微博首頁(yè),一張圖的時(shí)候是如何確定圖大小的?7. javascript - 前端開(kāi)發(fā) 本地靜態(tài)文件頻繁修改,預(yù)覽時(shí)的緩存怎么解決?8. javascript - 怎么看網(wǎng)站用了什么技術(shù)框架?9. PC 手機(jī)兼容的 編輯器10. java報(bào)錯(cuò)Communications link failure 該如何解決?
