有一個需求,就是前端 使用 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 包。 不然沒有這個方法。 而 低版本的不能夠。