python之json.loads()报错ValueError: No JSON object could be decoded解决

当使用json.loads()解析JSON字符串时遇到ValueError: No JSON object could be decoded,通常是编码或单引号问题导致。解决方法包括将字符串先转化为标准格式,或者利用Python内置函数处理。务必注意安全,因为该函数可能执行危险操作。

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

问题:json.loads(xxx)后报错ValueError: No JSON object could be decoded
原因:注意是unicode编码和'单引号问题引起
解决:

  1. 方法一:将xxx先作字符串转化xxx.replace("u'", '"').replace("'", '"'),然后再json.loads(xxx.replace("u'", '"').replace("'", '"'))即可

  2. 方法二:使用Python内置函数eval(expression[, globals[, locals]])解决
    说明:eval()用来执行一个字符串表达式,并返回表达式的值,强调:eval()可以将字符串转成表达式并执行,所以就可用该函数执行系统命令、删除文件等危险操作,因此要注意安全性

具体示例如下:

>>> test = "[[u'a',u'b'],[u'1',0]]"
>>> json.loads(test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
>>> type(test)
<type 'str'>
>>> test.replace("u'", '"').replace("'", '"')
'[["a","b"],["1",0]]'
>>> type(test.replace("u'", '"').replace("'", '"'))
<type 'str'>
>>> json.loads(test.replace("u'", '"').replace("'", '"'))
[[u'a', u'b'], [u'1', 0]]
>>> eval(test)
[[u'a', u'b'], [u'1', 0]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值