



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Java接口返回json如何忽略特定屬性目錄經(jīng)常遇到的問題不完美的解決方案通過SimplePropertyPreFilter方式(Json返回)場景一:只保留name和sex字段場景二:過濾掉email和phone字段@ResponseBody返回json如何忽略特定屬性通過反射Map解決不同接口參數(shù)使用相同對象展示不同參數(shù)
經(jīng)常遇到的問題
在實(shí)際得開發(fā)過程中,我們經(jīng)常會遇到以下場景,我們后端請求某個(gè)接口后獲取到得數(shù)據(jù),不希望將所有字段都返回給前端,那么我們需要封裝,或者過濾一些不必要得字段后返回給前端。
不完美的解決方案
使用Jackson字段動態(tài)過濾
@JsonIgnore用于忽略序列化和反序列化中使用的邏輯屬性。@JsonIgnore可用于setter、getter或字段。
@JsonIgnoreProperties忽略JSON序列化和反序列化中的指定邏輯屬性。它在類級別進(jìn)行了注釋。
@JsonIgnoreType在類級別進(jìn)行了注釋,它忽略了整個(gè)類。
@JsonInclude(JsonInclude.Include.NON_NULL)屬性為NULL不序列化,即不返回給前端
以上方式都不滿足實(shí)際要求,需要序列化的Property,并非固定的。這次我要id,name,下次我可能要name,score。
通過SimplePropertyPreFilter方式(Json返回)
這種寫法,接口返回類型就要求是Json字符串類型。無法滿足Spring注解@ResponseBody。
場景一:只保留name和sex字段
publicstaticvoidmain(String[]args){
JSONObjectjsonObject=newJSONObject();
jsonObject.put("name","jhon");
jsonObject.put("age",18);
jsonObject.put("sex","男");
jsonObject.put("phone","1111111");
jsonObject.put("email","142");
System.out.println(jsonObject);
//SimplePropertyPreFilterfilter=newSimplePropertyPreFilter("name","sex");
SimplePropertyPreFilterfilter=newSimplePropertyPreFilter();
filter.getIncludes().add("name");
filter.getIncludes().add("sex");
System.out.println(JSONObject.toJSONString(jsonObject,filter));
//或者調(diào)用以下方式
publicstaticStringobject2Json(Objectobject,String...keys){
SimplePropertyPreFilterfilter=newSimplePropertyPreFilter(object.getClass(),keys);
returnJSONObject.toJSONString(object,filter,SerializerFeature.WriteMapNullValue);
場景二:過濾掉email和phone字段
publicstaticvoidmain(String[]args){
JSONObjectjsonObject=newJSONObject();
jsonObject.put("name","jhon");
jsonObject.put("age",18);
jsonObject.put("sex","男");
jsonObject.put("phone","1111111");
jsonObject.put("email","142");
System.out.println(jsonObject);
SimplePropertyPreFilterfilter=newSimplePropertyPreFilter();
filter.getExcludes().add("email");
filter.getExcludes().add("phone");
System.out.println(JSONObject.toJSONString(jsonObject,filter));
}
@ResponseBody返回json如何忽略特定屬性
@RequestBody注解標(biāo)記接收前端傳遞給后端的json數(shù)據(jù),然后轉(zhuǎn)成對象。
@ResponseBody注解標(biāo)記是把后端返回的對象轉(zhuǎn)換成json數(shù)據(jù),然后傳遞給前端。
我們想要的效果是將查詢得到的List對象動態(tài)過濾指定的字段
但實(shí)際上我們得到的對象還會再封裝一層:returnnewIResult(list);
使用AOP,通過自定義注解的方式來控制動態(tài)過濾指定字段。(實(shí)現(xiàn)太麻煩放棄了)
通過反射Map解決
通過反射獲取到該類和所要獲取的字段get方法,保存在一個(gè)map中。但當(dāng)數(shù)據(jù)量大的情況再把對象轉(zhuǎn)換一次map,就會影響接口性能了。(此方式不可?。?/p>
最終解決辦法:定義查詢列表數(shù)據(jù)的接口,用Map來承載,而不是bean。
publicListMapString,Objectlist(Entityentity);
不同接口參數(shù)使用相同對象展示不同參數(shù)
當(dāng)我們在寫接口的時(shí)候,一個(gè)實(shí)體類對象會被多個(gè)接口使用,但每個(gè)接口要求的參數(shù)可能都不一樣。為了接口參數(shù)規(guī)范,于是我們就重寫了多個(gè)實(shí)體類,對應(yīng)不同的接口。(相信很多人目前是偷懶每套業(yè)務(wù)都只用了一個(gè)實(shí)體類對象吧,前端自己挑選所需要的字段)
但是提供給第三方的接口,參數(shù)和結(jié)果字段必須都要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 送配電線路工(配電)-中級工模擬練習(xí)題(含答案)
- 2025年度建筑工程合同模板房地產(chǎn)合同范例
- 經(jīng)濟(jì)學(xué)基礎(chǔ)試題集
- 編程算法筆試題目及答案
- 浙江國企招聘2025麗水縉云縣保安服務(wù)有限公司招聘10人筆試參考題庫附帶答案詳解
- 2025重慶機(jī)電控股集團(tuán)機(jī)電工程技術(shù)有限公司招聘市場營銷安全員等崗位共11人筆試參考題庫附帶答案詳解
- 2025濟(jì)南財(cái)金投資控股集團(tuán)有限公司權(quán)屬企業(yè)招聘(9人)筆試參考題庫附帶答案詳解
- 2025江西吉安市青原區(qū)兩山人力資源服務(wù)有限公司招聘5人筆試參考題庫附帶答案詳解
- 2025年河南省儲備糧管理集團(tuán)招聘12人筆試參考題庫附帶答案詳解
- 2025山西省屬某大型國有企業(yè)招聘勞務(wù)派遣制30人筆試參考題庫附帶答案詳解
- 《物控培訓(xùn)資料》課件
- 初二八年級下物理期中考試分析
- 金蝶K3-WISE財(cái)務(wù)管理全操作手冊
- 單位工程施工組織設(shè)計(jì)實(shí)訓(xùn)任務(wù)書
- 1.技術(shù)交流PPT-輸電線路分布式故障診斷裝置
- 磚砌隔油池施工方案
- 醫(yī)院護(hù)理培訓(xùn)課件:《跌倒墜床PDCA分析》
- 七年級歷史下冊圖片題剖析
- 中醫(yī)內(nèi)科方歌大全
- 管線打開作業(yè)安全管理標(biāo)準(zhǔn)
- 溝通與談判第講非語言溝通
評論
0/150
提交評論