如何修复JSONDecodeError: Expecting value?Colab运行卫星图像ML代码报错
JSONDecodeError错误原因通俗解释
我无编程基础,正在Google Colab中运行Google开发的卫星图像机器学习模型训练交互式笔记本,执行以下代码时反复遇到JSONDecodeError: Expecting value: line 2 column 1 (char 1)错误:
import requests requests.post( url=f'{service_url}/ping', headers={'Authorization': f'Bearer {identity_token}'}, json={'x': 42, 'message': 'Hello world!'}, ).json()
错误输出:
--------------------------------------------------------------------------- JSONDecodeError Traceback (most recent call last) <ipython-input-43-3a865e581f23> in <module>() 4 url=f'{service_url}/ping', 5 headers={'Authorization': f'Bearer {identity_token}'}, ----> 6 json={'x': 42, 'message': 'Hello world!'}, 7 ).json() 3 frames /usr/local/lib/python3.7/dist-packages/requests/models.py in json(self, **kwargs) 896 # used. 897 pass --> 898 return complexjson.loads(self.text, **kwargs) 899 900 @property /usr/lib/python3.7/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 346 parse_int is None and parse_float is None and 347 parse_constant is None and object_pairs_hook is None and not kw): --> 348 return _default_decoder.decode(s) 349 if cls is None: 350 cls = JSONDecoder /usr/lib/python3.7/json/decoder.py in decode(self, s, _w) 335 336 """ --> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 338 end = _w(s, end).end() 339 if end != len(s): /usr/lib/python3.7/json/decoder.py in raw_decode(self, s, idx) 353 obj, end = self.scan_once(s, idx) 354 except StopIteration as err: --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None 356 return obj, end JSONDecodeError: Expecting value: line 2 column 1 (char 1)
错误原因通俗解释
这个错误本质是:你让Python把服务器返回的内容转换成JSON格式,但服务器返回的根本不是合法的JSON内容,甚至可能是空内容、错误页面。
拆解开说:
- 你的代码是向
{service_url}/ping这个网络地址发送了请求,还带了身份令牌和参数 - 服务器收到请求后,没有返回你预期的JSON格式内容——可能是地址不对、令牌无效,或者服务器本身出问题,返回了空白、错误提示文字,甚至是404/500报错的网页
- 当你调用
.json()方法时,Python尝试把这段不符合规则的内容按JSON解析,自然会报错“期待值”——因为JSON必须是{}、[]这种特定格式的,返回的内容完全不达标
针对这个Colab笔记本场景,大概率是这几个具体问题:
service_url变量没设置正确,指向的地址不存在或者无法访问identity_token无效,服务器拒绝了你的请求,返回了错误页面而非正常JSON响应- 对应的服务没启动或者运行异常,没法返回正常的JSON结果
内容的提问来源于stack exchange,提问作者rouneezie
相关产品推荐
相关产品推荐

