如何将对象数组放入DataTables的data对象并消除转义反斜杠
解决DataTables数据封装中的JSON转义反斜杠问题
问题出在你多做了一次JSON序列化操作:你的GeoJSON数组本身就是JavaScript对象类型,完全可以直接赋值给data对象的属性,不需要提前调用JSON.stringify()。提前序列化会把对象转换成字符串,当你最终对整个data对象做序列化时,字符串里的双引号就会被自动转义,从而出现大量的\反斜杠。
正确的做法
直接将GeoJSON对象数组赋值给data对象,仅在需要把整个data对象转为JSON字符串时,调用一次JSON.stringify()即可:
// 假设 geoJsonArray 是你的GeoJSON格式对象数组 const dataForDataTables = { data: geoJsonArray // 直接赋值对象数组,不提前序列化 }; // 当需要输出或传输JSON字符串时,再统一序列化 const finalJsonStr = JSON.stringify(dataForDataTables); console.log(finalJsonStr); // 不会出现多余的转义反斜杠
如果已经生成了带转义的字符串,如何修复
如果已经得到了带大量反斜杠的JSON字符串,可以通过两次解析来还原:
// 假设 escapedJson 是带转义反斜杠的字符串 const escapedJson = '{"data":"[{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"Point\",\"coordinates\":[120,30]}}]"}'; // 第一步:解析整个字符串为对象 const parsedObj = JSON.parse(escapedJson); // 第二步:把data属性里的字符串解析回对象数组 parsedObj.data = JSON.parse(parsedObj.data); // 现在再序列化就正常了 const fixedJsonStr = JSON.stringify(parsedObj); console.log(fixedJsonStr);
内容的提问来源于stack exchange,提问作者spreaderman
相关产品推荐
相关产品推荐

