Json字符串转换成Json对象时候,有两种方式:
假设d是json字符串:
1,eval('(' + d + ')')。
2,JSON.parse(d);
但是以上方式有隐患,如果Json字符串有换行的话,这样转换就会报错。
假如有这样一个字符串:
var json='{"CityName":"西安","CityOrder":"物料::WAA010001\n物料名称::轴承\n规格型号::HRB1209\n供应商::东莞市耀光化工贸易有限公司\n采购员::\n请购部门:: \n批号::JH201803250001"}';
输出是这样:
转换的时候报错:
错误原因:JSON.parse转json字符串时遇到一些特殊字符需要先转义。
用str.replace(/\n/g,"\\n")转义,'\\'转成单个'\','\\n'转成'\n',最后转成'\\n'这样就可以用parse转成对象时变为'\n',取出的字符串设置到html文本中\n被解析为换行。
可以这样转义:.replace(/\n/g,"\\n").replace(/\r/g,"\\r")。
如下:
var jsonObj=JSON.parse(json.replace(/\n/g,"\\n").replace(/\r/g,"\\r"));