JSON.parse解析json字符串包含\n回车换行符报错
JSON.parse解析json字符串包含\n回车换行符报错
2020年5月27日 17点31分 今天改离职妹子代码的时候遇到了一个问题,我吐了。。。
JSON.parse()可以将Json字符串转换成Json对象
var json = '{"remark":"1\u3001\u548C\u5BA2\u6237\u786E\u8BA4\u662F\u5426\u6B63\u5E38\u4E0A\u7EBF\uFF0C\u5982\u679C\u662F\uFF0C\u9700\u8981\u5BA2\u6237\u63D0\u4F9B\u90AE\u4EF6\u8D70\u5148\u4E0A\uFF1B\n2\u3001\u5982\u679C\u4E0D\u80FD\u6B63\u5E38\u4E0A\u7EBF\uFF0C\u8BA9\u5BA2\u6237\u786E\u8BA4\u662F\u5426\u6362\u65F6\u95F4\uFF0C\u5220\u9664\u4E0D\u9700\u8981\u7684\u7684\u8D44\u6E90\u3002","status":1,"createAt":"2020-05-25T12:03:32.000+08:00","updateAt":null,"createBy":"79086","updateBy":null}';
//妹子写的
JSON.parse(json)
这样的写法是存在问题的,如果json中存在\n回车等特殊符号时,js会报解析失败的错误
VM90:1 Uncaught SyntaxError: Unexpected token
in JSON at position 41
at JSON.parse (<anonymous>)
at <anonymous>:7:6
unicode转码后排查数据中确实包含回车符号
var json = '{"remark":"1、和客户确认是否正常上线,如果是,需要客户提供邮件走先上;\n2、如果不能正常上线,让客户确认是否换时间,删除不需要的的资源。","status":1,"createAt":"2020-05-25T12:03:32.000+08:00","updateAt":null,"createBy":"79086","updateBy":null}';
解决方法:
保存的的时候后台过滤、前台获取的时候进行过滤。
//改后的前台获取的时候进行过滤。
JSON.parse(json.replace(/[\r\n\s+]/g, ''))
-------------已经触及底线 感谢您的阅读-------------