一、json.decoder.JSONDecodeError: Invalid control character at: line 2 column 18 (char 19)
原因:json默认使用的是严谨格式,当跨语言传递数据时,就容易报出这个错误
import json
json_string = "{'start_row': 0, 'end_row': 0, 'env': 0, 'now': 0}"
parsed_data = json.loads(json_string)
print(parsed_data)
解法一:
把单引号变成双引号即可(注:在这字符串用双引号 即字典内双引号)
import json
tt = '{"start_row": 0, "end_row": 0, "env": 0, "now": 0}'
t = json.loads(tt)
print(t)
解法二
import ast
tt = "{'start_row': 0, 'end_row': 0, 'env': 0, 'now': 0}"
tt = ast.literal_eval(tt)
print(tt, type(tt))
解法三,本人另篇博文 json-repair 一个牛掰修复无效的 json的库
pip install json-repair
from json_repair import repair_json, loads
json_string = "{'start_row': 0, 'end_row': 0, 'env': 0, 'now': 0}"
json_data = loads(json_string)
print(json_data)
json.decoder.JSONDecodeError: Invalid control character at: line 2 column 18 (char 19)
原因:json默认使用的是严谨格式,当跨语言传递数据时,就容易报出这个错误。
解决方法:加上参数 strict
json.loads(json_data, strict=False)
json.dumps(data) 将汉字转为unicode编码
原因:json默认会进行字符转换
解决方法: 添加 ensure_ascii 参数
json.dumps(data, ensure_ascii=False)