【前端】Bad control character in string literal in JSON解决方案(详解),JSON.parse()报错

5,936 阅读1分钟

问题描述

let text = '{"fail_station": "FSW_WELDING_DRY_2\r\n","fail_resourceid": "200118223\r\n","fail_timestamp": "2022-12-17"}'

JSON.parse(text)

JSON.parse(str) 报错:Uncaught SyntaxError: Bad control character in string literal in JSON at position


原因分析:

JSON.parse()方法将有效的 JSON 字符串数据转换为 JavaScript 对象内部不能包含转义字符。


解决方案:

方法一:将JSON转为JS对象前,先处理字符串

let text = '{"fail_station": "FSW_WELDING_DRY_2\r\n","fail_resourceid": "200118223\r\n","fail_timestamp": "2022-12-17"}'
text = text.replace(/[\r|\n|\t]/g,"")
JSON.parse(text)

text = text.replace(/[\r|\n|\t]/g,"")

这句把\r,\n,\t 都替换为空。

方法二:数据库中更改数据

因为我们这个是自己的数据库,输入的数据不该出现\r\n,所以直接对数据库数据进行修改。

-- 查询在yTable表里yColumn列里有\r\n的数据:
SELECT * FROM yTable WHERE yColumn LIKE CONCAT('%',CHAR(13),CHAR(10),'%')

-- 把yTable表里yColumn列里\r\n替换为空:
UPDATE yTable
SET yColumn = REPLACE(yColumn, CHAR(13) + CHAR(10), '') 
WHERE 
yColumn LIKE CONCAT('%',CHAR(13),CHAR(10),'%')

相关知识:

JSON.parse() 详细教程:www.runoob.com/json/json-p…