python使用json将字符串转字典报错

本文详细解析了在Python中遇到的JSONDecodeError错误,当尝试使用json.loads()方法解析单引号包裹的键值对时出现的问题。文章提供了两种解决方案:一是将数据中的单引号替换为双引号,二是使用eval()替代json.loads()进行数据转换,并验证了两种方案的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

C:\Users\lenovo\AppData\Local\Programs\Python\Python37\python.exe D:/360MoveData/Users/lenovo/Desktop/startProject/OAS.Cloud.PAAS_Interface/TestCases/UM/Test_01_register.py
D:\360MoveData\Users\lenovo\Desktop\startProject\OAS.Cloud.PAAS_Interface\common\CaseData.ini
Traceback (most recent call last):
  File "D:/360MoveData/Users/lenovo/Desktop/startProject/OAS.Cloud.PAAS_Interface/TestCases/UM/Test_01_register.py", line 73, in <module>
    Test_UM_register().test_01()
  File "D:/360MoveData/Users/lenovo/Desktop/startProject/OAS.Cloud.PAAS_Interface/TestCases/UM/Test_01_register.py", line 52, in test_01
    headers = json.loads(dataList[1])
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

Process finished with exit code 1

在这里插入图片描述
如上,json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes,意思为jsondecodeerror:期望属性名用双引号括起来

问题分析

我查看我的原始数据,格式为:{‘Content-Type’: ‘application/json’}
python对单引号、双引号都认为是引号,但对于json来说,它识别是按照双引号来的。因此,凡是用json来格式转换,必定将单引号转为双引号,必要的时候加“\”转义。通过上述问题分析,我们得到两个解决方案:1、将原格式换成双引号;2、换其它方式来转换

问题解决

1、将原格式换成双引号
{‘Content-Type’: ‘application/json’}改为{“Content-Type”: “application/json”}
在这里插入图片描述
验证结果:
成功
2、换其它方式来转换

        headers = eval(dataList[1])
        # headers = json.loads(dataList[1])

在这里插入图片描述验证结果:
成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lion King

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值