ホームページ > バックエンド開発 > Python チュートリアル > 「json.loads()」が「JSONDecodeError: Expecting Value」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

「json.loads()」が「JSONDecodeError: Expecting Value」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-08 06:02:10
オリジナル
603 人が閲覧しました

Why Does `json.loads()` Throw a

JSONDecodeError: Expecting Value in Python

json.loads() 関数を使用して JSON を解析しようとすると、「Expecting value: line 1 columns 1」のようなエラー メッセージが表示されます。 (char 0)」が発生する可能性があります。このエラーは、指定された入力文字列が予期された JSON 形式に準拠していないことを示します。

問題の解決

このエラーの最も一般的な原因は、応答本文が空または不完全であることです。これを解決するには、次の手順に従っていることを確認します。

  1. API 呼び出しの結果が空ではないことを確認します。 200 範囲の HTTP 応答ステータス コードが返される必要があります。
  2. Unicode の代わりに UTF-8 エンコードを使用して応答本文をデコードします。 json.loads() 関数は、UTF-8 でエンコードされたデータを直接処理できます。
  3. よりユーザー フレンドリーな API や組み込みの JSON サポートを提供する、リクエストや httpx などの代替ライブラリの使用を検討してください。

リクエストを使用した例を次に示します。 package:

import requests

response = requests.get(url)
if response.status_code != 204:
    return response.json()
ログイン後にコピー

HTTP 標準の違反を防ぐために、Content-Type ヘッダーをチェックして、サーバーが JSON を配信することを意図していることを確認します。 JSON の解析中に ValueError が発生した場合は、適切なエラー処理を実装できます:

if (
    response.status_code != 204 and
    response.headers["content-type"].strip().startswith("application/json")
):
    try:
        return response.json()
    except ValueError:
        # Handle server misbehavior
ログイン後にコピー

以上が「json.loads()」が「JSONDecodeError: Expecting Value」をスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート