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, ''))