ホームページ >バックエンド開発 >Python チュートリアル >Python の json.loads を使用すると「ValueError: Extra Data」が発生するのはなぜですか?

Python の json.loads を使用すると「ValueError: Extra Data」が発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-16 09:07:02800ブラウズ

Why Am I Getting

エラー: Python の json.loads を使用する場合の「ValueError: Extra data」

Python の json.loads 関数を使用して JSON ファイルを解析する場合、次のエラーが発生する可能性があります:

ValueError: Extra data: line 88 column 2 - line 50607 column 2 (char 3077 - 1868399)

このエラーは、JSON ファイル内に有効な JSON 構造の一部ではない追加データがあることを示します。

原因

このエラーは通常、JSON ファイルの 1 行に複数の JSON オブジェクトが含まれている場合に発生します。 json.loads は入力として単一の JSON オブジェクトを想定しますが、最初のオブジェクトの後に追加のコンテンツがある場合は、「余分なデータ」エラーが発生します。

サンプル JSON

たとえば、次のサンプル JSON ファイルについて考えてみましょう:

{"id": 123, "name": "John"}
{
    "id": 456,
    "name": "Jane"
}

このファイルには 2 つの JSON オブジェクトが含まれていますが、各オブジェクトは別々の行にありません。 json.loads は最初のオブジェクトに遭遇すると、それを解析しようとし、2 番目のオブジェクトに到達したときにエラーを発生させます。

解決策

このエラーの解決策各 JSON オブジェクトがファイル内の独自の行にあることを確認することです。これは、ファイルを手動で編集するか、ツールを使用して JSON を再フォーマットすることで実行できます。

反復解析

JSON ファイルが大きく、多くの JSON オブジェクトが含まれている場合また、反復アプローチを使用して、ファイル全体をメモリにロードせずにファイルを解析することもできます。

import json

tweets = []
with open('tweets.json', 'r') as file:
    for line in file:
        tweets.append(json.loads(line))

このアプローチでは、ファイルは 1 行ずつ反復され、各行は JSON オブジェクトとして解析されます。 。これにより、中間の Python オブジェクトの保存が回避され、大きなファイルの場合により効率的になります。

以上がPython の json.loads を使用すると「ValueError: Extra Data」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。