Docker容器服务输出json报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

1.json模块常用的四个函数

1 import json
2 json.load() # 将一个存储在文件中的json对象(str)转化为相对应的python对象
3 json.loads() # 将一个json对象(str)转化为相对应的python对象
4 json.dump() # 将python的对象转化为对应的json对象(str),并存放在文件中
5 json.dumps() # 将python的对象转化为对应的json对象(str)

2.使用json模块经常遇见的bug

1 File "I:\Anaconda\lib\json\decoder.py", line 357, in raw_decode
2     raise JSONDecodeError("Expecting value", s, err.value) from None
3 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

最近用docker封装镜像,起一个文本相关的服务,在返回结果时,总报这个错。

import requests, json
response = requests.get(url="http://www.example.com", headers=headers) #传回的是json对象
result = json.loads(response.text)

怀疑少给了一个参数(Expecting value: line 1 column 1 (char 0)),经过同事指点,发现response.status_code = 200没问题,这个代码平时本地可以run,此时在开发机上,封装镜像后挂掉,大概率是镜像问题。在容器中单独起服务后,可以输出结果,但是输出的结果是乱码,添加encode也不行。

那为什么不能返回结果呢?

但是因为网络问题,导致返回的数据不是json类型,而是网络出现问题的网页格式,这个值不是json.loads()期待的参数,所以出现错误。

解决方法:

构架镜像时,需要加入中文编码,解决中文乱码

猜你喜欢

转载自blog.csdn.net/pearl8899/article/details/116572664