源头
出现这个报错提示,大家从错误就可以看的出来,这就是json的错误,一般来说都是json格式出现了错误,本人遇到比较多的情况就是json字符串里面出现了一些会影响json格式的符号,这次出现这个错误的原因就是json字符串里面出现了引号。
事发–血案
今天客户让我查询一个合同,但是打开合同具体信息时发现合同页面里面都是空白,自然而然就用浏览器调试,发现了这个错。
遇到这种问题没办法了,只能检查把自己的json字符串显示出来查看看是否存在特别的字符,一般来说像反斜杠,单引号,双引号,回车,以及空字符串之类的,而我本次遇到的就是其中一个属性的值为双引号。一般来说遇到特殊符号用过replace方法替换掉就是了,但是这个双引号和其他符号不同,因为他和json格式自带的双引号一模一样,替换掉那json自带的双引号也就被替换掉了,所以我用了一个比较笨的方法来解决此事。
这个方法就是找规律,json自带的双引号无非就是 “:”,“,”,{“,”} 这四种,我就把这四种先替换成单引号,再把剩余的双引号替换为中文的双引号,最后再把这四种再恢复就可以了
var a=‘${c}’
var b=a.replace(/“:”/g,“‘:’”);
var d=b.replace(/“,”/g,“‘,’”);
var e=d.replace(/“}/g,”‘}“);
var f=e.replace(/{”/g,"{’“);
var g=f.replace(/”/g,““”);
var h=g.replace(/'/g,“”");
当然了,这个方法只适用于一般的json问题,如果你的json的value值里面的双引号格式和json自带的双引号格式一模一样,请恕我暂时无能为力。
总结
js里面出现这种问题就找里面是不是有特殊符号就是了,因为特殊符号破坏了json。总之我们遇到问题不要慌乱,要冷静下来寻找方法,可以replace的直接replace,不能的想办法replace,办法总是比问题多的。
我的个人博客地址:http://www.dbhx.vip