json序列化报错,三种方案解决 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:

一、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)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风华浪浪

讨个老婆本呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值