前后端接口出現參數字段為Json的處理方法


前段時間阿里的老大安排我開發了一個工單保存申請的接口,該接口入參VO中包含一個formData的字段,這個字段中的內容是不是后端定義的,而是前端定義好之后轉換為一個Json形式的數據傳遞到后端然后入庫。

1) 最初的設計方案:

   fromData字段定義成字符串,前端將要傳遞的數據序列化為json字符串,然后放到這個formData中傳遞到后端,這個方法需要前端將請求參數進行轉義,然后傳遞到后端程序中也沒有什么問題,json數據也可以平穩落庫;

2)遇到的問題:

     但是在開發詳情接口將formData字段的數據從數據庫中取出返回給前端時,發生了一個問題,就是出參中formData這個字段的數據包含了大量的>的轉義符號,

3) 產生問題的原因:

     出現這個問題的原因就是詳情接口出參VO中formData也是字符串,這樣出參中該字段就是字符串套字符串,雙引號套雙引號,就會產生雙引號轉義的問題。設計新增接口和詳情接口時,formData這個字段不應該設計成String字符串,否則不管是新增時前端將數據傳給后端,還是查詢時后端將數據傳給前端,都要對該字段的數據進行轉義。

4) 解決方案

   一、將新增接口WorkOrderCreateReqVo和查詢接口WorkOrderDetailResVo中的formData這個字段設計成Object類型,然后將WorkOrderCreateReqBo的formData也設計成Object,在使用mapstruct將請求Bo轉換為entity時使用fastJson的JSON.toJSONString將Object轉換為json字符串並入數據庫。

       入參轉換模型:

  Vo (Object) --------------------------->  Bo(Object) ----------Json.toJSONString----------> Entity

     二、詳情接口出參時entity先轉換為WorkOrderDetailResBo,然后使用mapstruct將WorkOrderDetailResBo轉換為WorkOrderDetailResVo時使用JSON.parse方法

將字符串String轉換為Objcet類型;

  出參轉換模型:

  Entity--------------------------->  Bo(String) ----------Json.parse----------> Vo(Object)

 

 

提示:對象模型轉為不一定要用mapstruct,同類型的框架也有很多,數據序列化和反序列化也不一定要用fastJson,而且最近fastJson風評不好,推薦使用老牌Jackson.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM