1. 程式人生 > 程式設計 >js前端傳json後臺接收‘‘被轉為quot的問題解決

js前端傳json後臺接收‘‘被轉為quot的問題解決

一、產生原因

前端傳json格式資料,後臺接收卻發現有一堆& quot;,但是如果後臺接收引數用@RequestBody註解,則不會出現這個問題,出現這一問題的原因就是後臺沒有按照json格式去接收引數,按照json接收引數的前提是請求頭 引數Content-Type:application/json,如此一來,後臺框架才知道如何去處理引數,但有時候遇到的需求無法這麼寫,例如傳送下載請求:
json格式引數最常見的是傳送ajax請求,但是ajax無法觸發瀏覽器下載機制,故不支援下載使用;

用a標籤發下載請求,攜帶引數有限,適合單個下載請求

利用form表單拼接引數,提交表單傳送請求,但無法傳送攜帶json引數的請求,所以只能把json格式的字串拼接到輸入框,後臺用String接收,這樣就會出現將引號轉譯為& quot;這一問題。

二、解決方案

1、方案一

使用org.apache.commons.lang.StringEscapeUtils這個類下的unescapeHtml()這個方法

@RequestMapping("/downloads")
public ResultVO downloads(String models) {
 String jsonModels = StringEscapeUtils.unescapeHtml(models);
 // 然後再去轉為你要的Object
 
 return ResultVO.success();
}

pom依賴

<dependency>
 <groupId>commons-lang</groupId>
 <artifactId>commons-lang</artifactId>
 <version>2.6</version>
</dependency>

2、方案二

將所有的&quot替換回引號

String jsonModels = models.replaceAll("&quot;","\"");

三、結束

批量下載已搞定,頗有收穫,所以遇到問題還是需要耐心分析,認真記錄的,不僅要解決掉問題,還要知根知底。

另外感謝這篇文章 https://blog.csdn.net/charset_ok/article/details/80239882

到此這篇關於js前端傳json後臺接收‘‘被轉為&quot;的問題解決的文章就介紹到這了,更多相關json後臺接收&quot;內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!