Python JSONDecodeError:应为值:第1行第1列(字符0)错误
我在请求从api获取json时遇到了这个错误 我可以使用“/v1/articles”路径获取json数据Python JSONDecodeError:应为值:第1行第1列(字符0)错误,python,json,django,api,decode,Python,Json,Django,Api,Decode,我在请求从api获取json时遇到了这个错误 我可以使用“/v1/articles”路径获取json数据 conn = http.client.HTTPSConnection("api.xxxx.com.tr") headers = { 'accept': "application/json", 'apikey': "cd6b6c96799847698d87dec9f9a731d6" } filter = "daily" conn.request
conn = http.client.HTTPSConnection("api.xxxx.com.tr")
headers = {
'accept': "application/json",
'apikey': "cd6b6c96799847698d87dec9f9a731d6"
}
filter = "daily"
conn.request("GET", "/v1/articles", headers=headers)
reader = codecs.getreader("utf-8")
res = conn.getresponse()
data = json.load(reader(res))
json.dumps(data)
return data
但是如果我设置了过滤器,就会出现JSONDecodeError。代码:
conn = http.client.HTTPSConnection("api.xxxx.com.tr")
headers = {
'accept': "application/json",
'apikey': "cd6b6c96799847698d87dec9f9a731d6"
}
conn.request("GET", "/v1/articles?$filter=Path eq '/daily/'", headers=headers)
reader = codecs.getreader("utf-8")
res = conn.getresponse()
data = json.load(reader(res))
json.dumps(data)
return data
我使用Postman尝试了相同的过滤器,没有错误,我可以得到Json数据
从邮递员返回的Json数据:
[
{
"Id": "40778196",
"ContentType": "Article",
"CreatedDate": "2018-03-20T08:28:05.385Z",
"Description": "İspanya'da 2016 yılında çalınan lüks otomobil, şasi numarası değiştirilerek Bulgaristan üzerinden getirildiği Türkiye'de bulundu.",
"Files": [
{
"FileUrl": "http://i.xxxx.com/i/xxxx/98/620x0/5ab0c6a9c9de3d18a866eb54.jpg",
"Metadata": {
"Title": "",
"Description": ""
}
}
],
"ModifiedDate": "2018-03-20T08:32:12.001Z",
"Path": "/gundem/",
"StartDate": "2018-03-20T08:32:12.001Z",
"Tags": [
"ispanya",
"Araç",
"Hırsız",
"Dolandırıcı"
],
"Title": "İspanya'da çalınan lüks araç Türkiye'de bulundu!",
"Url": "http://www.xxxx.com.tr/gundem/ispanyada-calinan-luks-arac-turkiyede-bulundu-40778196"
}
]
我想不出这个问题。如果有人能帮我解决这个问题,那就太好了。谢谢。问题在下面一行
data = json.load(reader(res))
当您的响应不是json字符串时,会发生
JSONDecodeError
。因此,添加一个额外的逻辑,以查看响应是None
还是json
字符串。首先,打印reader(res)
,然后查看返回值是什么
data = json.load(reader(res))
当您的响应不是json字符串时,会发生
JSONDecodeError
。因此,添加一个附加逻辑,以查看响应是None
还是json
字符串。首先,打印读取器(res)
看看返回的是什么我终于解决了问题!使用请求
库解决了我的问题,现在我可以过滤api请求了
data = requests.get('https://api.xxxxx.com.tr/v1/articles', headers =
headers, params={"$filter":"Path eq '/xxxxxx/'"}).json()
我把这个答案留给将来可能需要这个解决方案的任何人。
谢谢你的建议。我终于解决了问题!使用
请求库
解决了我的问题,现在我可以过滤api请求了
data = requests.get('https://api.xxxxx.com.tr/v1/articles', headers =
headers, params={"$filter":"Path eq '/xxxxxx/'"}).json()
我把这个答案留给将来可能需要这个解决方案的任何人。
感谢您的所有建议。这很难解决,因为我无法访问您的资源,我只能建议使用更健壮的客户端请求来解决问题
conn.request(“GET”,“/v1/articles?$filter=Path eq'/daily/”,headers=headers)
你确定url应该有$
?@DeepSpace yes url应该有它。我真的,真的很怀疑。而且它也不应该有空格或引号。你连接的API是什么?这段代码还有其他奇怪的地方。例如,json.dumps(数据)
本身实际上什么都不做。这很难解决,因为我没有访问您的资源的权限,我只能建议使用更健壮的客户端请求来解决问题conn.request(“GET”,“/v1/articles?$filter=Path eq'/daily/”,headers=headers)
你确定url应该有$
?@DeepSpace yes url应该有它。我真的,真的很怀疑。而且它也不应该有空格或引号。你连接的API是什么?这段代码还有其他奇怪的地方。例如,json.dumps(数据)
它本身没有任何作用。我已经尝试打印阅读器(res)这是返回的内容。你能看看这个链接吗?哦,你能在这里pickle输出并共享它吗?也许我能看看我在问题中包括了回溯。谢谢你的努力。不,不是回溯。要更正它,我们需要解码响应中返回的对象。因此,如果你能将对象另存为pickle file并上传到这里,我可以尝试从itI中获取json,我已经尝试打印阅读器(res)这是返回的内容。你能看看这个链接吗?哦,你能在这里pickle输出并共享它吗?也许我能看看我在问题中包括了回溯。谢谢你的努力。不,不是回溯。要更正它,我们需要解码响应中返回的对象。因此,如果你能将对象另存为pickle file并上传到这里,我可以尝试从中获取json