簡體   English   中英

JSONDecodeError:預期值:第1行第1列(字符0)錯誤

[英]JSONDecodeError: Expecting value: line 1 column 1 (char 0) error

我在請求從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發生JSONDecodeError 因此,添加其他邏輯以查看響應是None還是json字符串。 首先,打印reader(res)並查看返回值

我終於解決了問題! 使用requests庫已經解決了我的問題,現在我可以過濾api請求了。

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

我將這個答案留給將來可能需要此解決方案的其他任何人。 感謝您的所有建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM