当使用json.loads()解析JSON字符串时遇到ValueError: No JSON object could be decoded,通常是编码或单引号问题导致。解决方法包括将字符串先转化为标准格式,或者利用Python内置函数处理。务必注意安全,因为该函数可能执行危险操作。
摘要由CSDN通过智能技术生成
问题:
json.loads(xxx)
后报错
ValueError: No JSON object could be decoded
原因:注意是
unicode
编码和
'
单引号问题引起
解决:
方法一:将xxx先作字符串转化
xxx.replace("u'", '"').replace("'", '"')
,然后再
json.loads(xxx.replace("u'", '"').replace("'", '"'))
即可
方法二:使用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
第一次遇到这样的异常,实在不知道如何是好?进行了测试发现
报错
的
json
出没有问题,而且每次出现异常的位置不一样
于是我认为这样的问题可能是因为程序执行过快,所以很简单的
解决
办法是:
def deal_dealers_info(self): province_list = self.get_province_list() for province in ...
更改文件后,会出现异常
ValueError
: No
JSON
object
could be
decode
d
原因:文件内容从不带BOM的utf-8编码变成了带BOM的utf-8编码
解决
方案:
方法1:以nodpad++打开文件---》编码----》转为UTF-8无BOM编码格式----》保存
2.用十六进制编辑器打开文件,删除前三个十六进制字符...
爬取淘宝MM的图片时,发现切换页面,URL都不改变。最后了解到网页是AJAX技术实现的。
百度下,AJAX全称Asynchronous JavaScript and XML ,是指异步JavaScript和XML,跨浏览器动态生成Web应用内容的功能。简单点说,就是在不切换页面的情况下,和服务器端进行数据的交换。
如此模拟打开AJAX网页,服务将会返回
json
格式的数据给你,采用
json
模块中
Traceback (most recent call last):
File "dataDeal.py", line 28, in
create
Json
("/home/wcs/train2014.
json
","/home/wcs/train")
File "dataDeal.py", line 8, in create
Json
data=
json
.
load
(f)
import tushare as ts
df = ts.get_hist_data('sh600016',start='2016-06-23',end='2018-12-30')
当我运行上面的代码时,出现
ValueError
: No
JSON
object
could be
decode
d这个错误。
这个问题出现的原因不是很明了,但是
解决
的方法很奇特,竟然是因为whitespace miss...
import
json
str = '{"data_source":"favourites","desease_id":"demo_bladder_liuzhuowei","start":0,"size":10,"show_entry_flag":False,"perms":{"prdb":{"patient":{"node_ids":null}}}}'
json
=
json
.
load
s(str)
print
json
Traceback (most recent call
json
.
load
s
python
错误:
'utf8' codec can't
decode
byte ...
由于需求,要用
python
读取网页返回
json
,并取得其中的数据但是却遇到以上编码的问题。
终于找到了
解决
方案:
我们只需要对字符串进行unicode化,忽略错误就行了~
代码如下:
str2 = unicode( str, errors='ignore')
但是要注意
以上脚本
报错
Traceback (most recent call last): File "Get_Linkflow_zabbix_to_internet.py", line 47, in <module> auth = response.
json
()["result"] File "/usr/lib/
python
2.7/site-packages/requests/models.py", line 897, in
json
return complex
json
.
load
s(self.text, **kwargs) File "/usr/lib64/
python
2.7/
json
/__init__.py", line 338, in
load
s return _default_
decode
r.
decode
(s) File "/usr/lib64/
python
2.7/
json
/
decode
r.py", line 366, in
decode
obj, end = self.raw_
decode
(s, idx=_w(s, 0).end()) File "/usr/lib64/
python
2.7/
json
/
decode
r.py", line 384, in raw_
decode
raise
ValueError
("No
JSON
object
could be
decode
d")
ValueError
: No
JSON
object
could be
decode
d
这个错误通常是因为响应内容不是有效的
JSON
格式。你需要检查响应内容是否符合
JSON
规范,或者尝试使用 try-except 语句处理这个异常。你可以在异常处理中打印出响应内容以便于调试。以下是一个示例代码:
import
json
import requests
url = "http://example.com/api"
response = requests.get(url)
auth = response.
json
()["result"]
except
ValueError
:
print("Invalid
JSON
response: {}".format(response.content))