有一个需求,就是前端 使用 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 包。 不然没有这个方法。 而 低版本的不能够。