Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Adakah `json.loads()` Membuang 'JSONDecodeError: Nilai Jangkaan' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Adakah `json.loads()` Membuang 'JSONDecodeError: Nilai Jangkaan' dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-08 06:02:10
asal
647 orang telah melayarinya

Why Does `json.loads()` Throw a

JSONDecodeError: Expecting Value in Python

Apabila cuba menghuraikan JSON menggunakan fungsi json.loads(), mesej ralat seperti "Expecting value: baris 1 lajur 1 (char 0)" boleh timbul. Ralat ini menunjukkan bahawa rentetan input yang diberikan tidak mematuhi format JSON yang dijangkakan.

Menyelesaikan Isu

Punca paling biasa ralat ini ialah badan tindak balas yang kosong atau tidak lengkap. Untuk menyelesaikannya, pastikan langkah berikut dipatuhi:

  1. Sahkan bahawa panggilan API menghasilkan respons yang tidak kosong. Kod status respons HTTP dalam julat 200 harus dikembalikan.
  2. Nyahkod badan respons menggunakan pengekodan UTF-8 dan bukannya Unicode. Fungsi json.loads() boleh mengendalikan data yang dikodkan UTF-8 secara langsung.
  3. Pertimbangkan untuk menggunakan perpustakaan alternatif seperti permintaan atau httpx, yang menyediakan lebih banyak API mesra pengguna dan sokongan JSON terbina dalam.

Berikut ialah contoh menggunakan Permintaan pakej:

import requests

response = requests.get(url)
if response.status_code != 204:
    return response.json()
Salin selepas log masuk

Untuk melindungi daripada pelanggaran piawaian HTTP, semak pengepala Jenis Kandungan untuk mengesahkan bahawa pelayan bertujuan untuk menghantar JSON. Jika ValueError berlaku semasa menghuraikan JSON, pengendalian ralat yang sesuai boleh dilaksanakan:

if (
    response.status_code != 204 and
    response.headers["content-type"].strip().startswith("application/json")
):
    try:
        return response.json()
    except ValueError:
        # Handle server misbehavior
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Adakah `json.loads()` Membuang 'JSONDecodeError: Nilai Jangkaan' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan