发布于 3年前

JSON.parse 解析json字符串时,遇换行符报错 SyntaxError: Unexpected token in JSON at position

var resStr = '{"model":"HP EliteBook 850 G2","serial":"5CMN89KH","cpu":"Intel Core i5-5300U 2.30GHz","memory":"共8GB    \nDDR3 0MHz 8GB","monitor":"1920X1080"}';

var resJson = JSON.parse(resStr);

报错:

[system] SyntaxError: Unexpected token 
 in JSON at position 110
    at JSON.parse (<anonymous>)
    at VueComponent.FunctionName (index.vue?c4d5:36)

错误原因:JSON.parsejson字符串时遇到一些特殊字符需要先转义。

str.replace(/\n/g,"\\n")转义,'\'转成单个'\','\n'转成'\n',最后转成'\n'这样就可以用parse转成对象时变为'\n',取出的字符串设置到html文本中\n被解析为换行。

可以这样转义:.replace(/\n/g,"\\n").replace(/\r/g,"\\r")

如下:

var resJson = JSON.parse(resStr.replace(/\n/g,"\\n").replace(/\r/g,"\\r"));
©2020 edoou.com   京ICP备16001874号-3