JSONDecodeError: Nilai Jangkaan: Baris 1, Lajur 1
Masalah:
>
Analisis:
Ralat mencadangkan bahawa " response_json", yang memegang respons JSON, sama ada kosong atau cacat. Beberapa faktor boleh menyumbang kepada isu ini:
- Badan Respons Kosong: Sahkan bahawa panggilan API mengembalikan badan respons yang tidak kosong.
- Kod Status Bukan 200: Pastikan bahawa Panggilan API menghasilkan kod status 200 julat. Ralat seperti 404 (Tidak Ditemui) boleh menghasilkan respons kosong.
- Pengepala Jenis Kandungan: Semak pengepala Jenis Kandungan bagi respons untuk mengesahkan bahawa ia menunjukkan respons JSON.
Penyelesaian:
Untuk menyelesaikan isu, pertimbangkan berikut:
-
Semak Respons Kosong: Gunakan pernyataan if untuk mengesahkan bahawa pembolehubah "response_json" tidak kosong sebelum cuba menyahkodnya.
-
Tangkap Pengecualian: Sertakan panggilan "json.loads" dalam blok cuba/kecuali untuk mengendalikan JSONDecodeError.
-
Gunakan Pustaka HTTP Teguh: Gantikan penggunaan pycurl dengan pustaka yang lebih mesra pengguna seperti Requests atau httpx, yang menyediakan sokongan JSON yang lebih baik.
Alternatif Pelaksanaan:
Menggunakan Permintaan:
import requests
response = requests.get(url)
response.raise_for_status() # raises exception when not a 2xx response
if response.status_code != 204:
return response.json()
Salin selepas log masuk
Menggunakan httpx:
import httpx
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status() # raises exception when not a 2xx response
if response.status_code != 204:
return response.json()
Salin selepas log masuk
Nota Tambahan:
- The simplejson perpustakaan tidak diperlukan kerana perpustakaan standard Python menyediakan modul "json" yang serupa dengan keupayaan pengekodan dan penyahkodan JSON.
- Penyahkodan UTF-8 dikendalikan secara automatik oleh kaedah "json.loads".
- Pertimbangkan untuk menggunakan pengesah atau linter JSON untuk memastikan respons JSON dibentuk dengan baik.
Atas ialah kandungan terperinci Mengapa saya mendapat 'JSONDecodeError: Expecting Value: Baris 1, Lajur 1' semasa menghuraikan data JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!