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í)例變量類型和使用的json庫(kù)有關(guān)(json庫(kù)可以設(shè)置對(duì)null如何處理)
回答2:1.返回POJO時(shí)可以將業(yè)務(wù)數(shù)據(jù)封裝,比如封裝成JSONResult類,里面有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. javascript - 百度echarts series數(shù)據(jù)更新問(wèn)題2. javascript - node服務(wù)端渲染的困惑3. mysql scripts提示 /usr/bin/perl: bad interpreter4. mysql新建字段時(shí) timestamp NOT NULL DEFAULT ’0000-00-00 00:00:00’ 報(bào)錯(cuò)5. css3 - css before 中文亂碼?6. html5 - h5寫的app用的webview,用手機(jī)瀏覽器打開(kāi)不顯示?7. php - 第三方支付平臺(tái)在很短時(shí)間內(nèi)多次異步通知,訂單多次確認(rèn)收款8. javascript - webpack --hot 熱重載無(wú)效的問(wèn)題9. python - django 按日歸檔統(tǒng)計(jì)訂單求解10. mysql - 一個(gè)表和多個(gè)表是多對(duì)多的關(guān)系,該怎么設(shè)計(jì)
