繁体   English   中英

什么是json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)

[英]What is json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我要求人脸比较API。 您在哪里发送2张图片,如果它们不是同一个人,它将返回此链接: Face ++ API

他们在文档中提到您可以这样请求:

curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare" \
-F "api_key=<api_key>" \
-F "api_secret=<api_secret>" \
-F "face_token1=c2fc0ad7c8da3af5a34b9c70ff764da0" \
-F "face_token2=ad248a809408b6320485ab4de13fe6a9"

这是我的代码:

result = json.loads(os.popen('curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg"').read())

但是当我运行它时,我得到的是:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
Traceback (most recent call last):
  File "/Users/max/Desktop/Programming/Face/venv/face.py", line 15, in <module>
    result = json.loads(os.popen('curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg"').read())
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我尝试使用请求以另一种方式做:

result = requests.get( "https://api-us.faceplusplus.com/facepp/v3/compare/api_key=myKey/api_secret=mySecret/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic33.jpg/https://us-mc-prod-asset.oss-us-west-1.aliyuncs.com/mc-official/scripts/demoScript/images/demo-pic39.jpg")

但是,我得到这个:

<Response [404]>

curl命令格式错误,因此,您收到错误Could not resolve host: api_key=myKey而不是有效的JSON返回数据。

但是,(不要偏离您的问题),我可能建议您使用类似requests (如果必须使用标准python库,则使用urllib2 )来发送HTTP请求。 以您的方式调用curl会产生意想不到的结果,例如您现在正在处理的内容。

此外, requests实际上具有用于响应对象的非常方便的json()方法。 这将使您的代码更整洁,更易于排除故障。 这是文档中的示例:

http://docs.python-requests.org/en/master/user/quickstart/#json-response-content

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM