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, ''))
posted @ 2020-05-27 17:32  趙小傑  阅读(4801)  评论(0编辑  收藏  举报