Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python JSONDecodeError:应为值:第1行第1列(字符0)错误_Python_Json_Django_Api_Decode - Fatal编程技术网

Python JSONDecodeError:应为值:第1行第1列(字符0)错误

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

我在请求从api获取json时遇到了这个错误

我可以使用“/v1/articles”路径获取json数据

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