JSONDecodeError: 预期值: 第 1 行第 1 列 (char 0) 错误



我在请求从 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

但是如果我设置过滤器,我有 JSONDecode错误。法典:

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

我使用邮递员尝试了相同的过滤器,没有错误,我可以获取 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"
    }
 ]

我无法弄清楚问题所在。如果有人在这个问题上帮助我,那就太好了。谢谢。

我终于想通了问题所在!使用 requests 库解决了我的问题,现在我可以过滤 api 请求了。

data = requests.get('https://api.xxxxx.com.tr/v1/articles', headers =
headers, params={"$filter":"Path eq '/xxxxxx/'"}).json()

我将这个答案留给将来可能需要此解决方案的任何其他人。感谢您的所有建议。

问题出在下一行

data = json.load(reader(res))

当响应不是 JSON 字符串时,会发生JSONDecodeError。 因此,添加一个额外的逻辑以查看响应是None还是json字符串。第一件事,打印reader(res),看看回报是什么

最新更新