前端 js 拼接json數據 ,以及後端java轉義 " 字符串

有一個需求,就是前端 使用 js 建立 幾條 有點長的json 格式的數據 ajax給後端去保存。 但是在 拼接的時候,總是 不懂怎麼拼接,怎麼轉成json的字符串數據。html

剛開始作的時候,想的是, 使用一個js的map 。去 放入 key -value 的數據,而後把map放入 
一個 js的數組裏面,而後 將該數組給 轉成json格式的數據。
但是發現,根本不能講 有 map的 list 數組給轉成json 字符串,,,
若是 單純的使用數組確定不行,。。。百度了一通,,,都沒有找到解決辦法,,,

在 冷靜了一下,去吃個飯,回來耐心通常玩, 一邊百度。。。
原來是使用 object 對象去 替代 map 就完成了,,,並且 轉出來是 完美的json格式的數據,
能夠放心的 ajax給後臺了。

下面是例子解決的方法--2中方式比較:

$(function(){
			
			 
    		var arr =  new Array();
    		var jarr=new Array();
    		
    		for (var i = 0; i < 2; i++) {
    		var map=new Map();
    		var obj = new Object();
    		obj["a"+i]="aa";
    		
    		map.set(i,"aa");
    		
    		jarr.push(map);
    		
    		arr.push(obj); 
    		
    		}
    		
			
			console.log(">>>"+jarr.toString());
			
			console.log("22>>>"+JSON.stringify(jarr));
			console.log(">>>>>>>>>>>>>");
			console.log(">>>"+arr.toString());
			
			console.log("22>>>"+JSON.stringify(arr));
			
		});

下面是 前端的輸出結果:

>>>[object Map],[object Map]
22>>>[{},{}]
 >>>>>>>>>>>>>
 >>>[object Object],[object Object]
22>>>[{"a0":"aa"},{"a1":"aa"}]

能夠看到,map對象徹底不能轉成json 。 

將 該json數據 ajax 給後臺,注意,後臺可能須要 將  字符串裏面的 雙引號給 轉義一下。
這樣纔是後端可使用 json了,能夠直接 使用 json工具類進行轉換對象了。

總結

能夠發現 對於js來講, 其實 json對象就是 object 對象,,,json對象是 object 對象的一種。。。前端

上面的是前端的。 到了後端轉義。。。 若是不轉義就是這樣的字符串ajax

[{&quot;material&quot;:&quot;22&quot;,&quot;minThickness&quot;:&quot;22&quot;,&quot;maxThickness&quot;:&quot;22&quot;,&quot;minUnitPrice&quot;:&quot;22&quot;,&quot;maxUnitPrice&quot;:&quot;22&quot;},{&quot;material&quot;:&quot;33&quot;,&quot;minThickness&quot;:&quot;33&quot;,&quot;maxThickness&quot;:&quot;33&quot;,&quot;minUnitPrice&quot;:&quot; 33&quot;,&quot;maxUnitPrice&quot;:&quot; 33&quot;}]

看到了吧。。。這樣 子確定不能使用的。 百度一下,。。。發現 比較少 幫助。。。 其實很簡單,只是 替換 便可。apache

params.replace("&quot;", "\"");

這裏寫 & 要注意,不是咱們  按 shift 出來的 & 是不同的。 被坑了一下。
他們是不同的。 人家是 html 專用的。

固然看到有 網友這樣處理:

String newJson = StringEscapeUtils.unescapeHtml4(jsonStr);

但是須要版本比較高的 apache.common 包。 不然沒有這個方法。 而 低版本的不能夠。
相關文章
相關標籤/搜索