Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonJSONDecodeErrorの説明と解決策

多くの開発者は、プログラムのデータをJSONファイルに保存します。他のプログラムは、JSONの操作を必要とするAPIを参照します。実際、JSONまたはそれに相当するPython辞書のユースケースを見つけるのに問題はありません。

JSONデータを操作しているときに、JSONDecodeErrorが発生する場合があります。このガイドでは、JSONDecodeErrorの原因と、このエラーを修正する方法について説明します。

Python JSONDecodeError

Python JSONDecodeErrorは、JSONデータのフォーマット方法に問題があることを示しています。たとえば、JSONデータに中括弧がない、値のないキーがある、または他の構文がない可能性があります。

JSONDecodeErrorを完全に修正するには、JSONファイルにアクセスして問題が何であるかを確認する必要があります。将来的に複数の問題が発生することが予想される場合は、JSONDecodeErrorを処理するためにtry…exceptブロックを使用することをお勧めします。

JSONDecodeErrorキーワードの後に​​、エラーの原因を説明する簡単な説明が表示されます。

適切にフォーマットされたJSONはすべて次のようになります。

{
	"key": "value"
}

「値」には、リスト、文字列、別のJSONオブジェクトなどの有効なJSON値を指定できます。

シナリオ例

ビジネスの従業員に発行されたコンピューターを表すJSONオブジェクトのリストを格納するプログラムを構築しています。各JSONオブジェクトは次のようになります:

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

[
	{
		"name": "Employee Name",
		"equip_id": "000"
	}
]

これらのJSONオブジェクトをequipment.jsonというファイルに保存します。このファイルには、次の1つのエントリのみが含まれています。

[
	{
		"name": "Laura Harper",
		"equip_id" "309"
	}
]

このデータをプログラムに読み込むには、jsonモジュールを使用できます。

import json

with open("equipment.json") as file:
	data = json.load(file)

print("Equipment data has been successfully retrieved.")

まず、JSONファイルの読み取りに使用するjsonモジュールをインポートします。次に、open()を使用します JSONファイルの内容を読み取るステートメント。 withステートメントが実行されると、機器データが取得されたことを通知するメッセージをコンソールに出力します。

コードを実行して、何が起こるか見てみましょう。

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/lib/python3.8/json/__init__.py", line 293, in load
	return loads(fp.read(),
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
	return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
	obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/json/decoder.py", line 353, in raw_decode
	obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 4 column 16 (char 47

私たちのコードは長いエラーを返します。 JSONDecodeErrorという用語の後にPythonがエラーの原因を説明していることがわかります。

ソリューション

JSONDecodeErrorは、JSONデータにコロン(:)がないことを示しています。このコロンは、4行目の16列目に表示されます。equipment.jsonファイルのこのデータ行を見ると、JSONが無効であることがわかります。

"equip_id" "309",

コードにコロンがありません。このエラーを修正するには、コロンを追加する必要があります。

"equip_id": "309",

データの表現方法に関する問題が修正されたので、プログラムの実行を再試行できます。

Equipment data has been successfully retrieved.

コードは正常に実行されます。

または、try…exceptハンドラーを使用してこの問題を処理し、別のフォーマットの問題が発生した場合にコードがすぐにエラーを返さないようにすることもできます。

import json

try:
	with open("equipment.json") as file:
		data = json.load(file)

	print("Equipment data has been successfully retrieved.")
except json.decoder.JSONDecodeError:
	print("There was a problem accessing the equipment data.")

JSONデータにエラーがある場合、このプログラムは次を返します。

There was a problem accessing the equipment data.

それ以外の場合、プログラムはデータを読み取り、コンソールに次のテキストを表示します。

Equipment data has been successfully retrieved.

結論

Python JSONDecodeErrorは、JSONオブジェクトのフォーマット方法に問題があることを示しています。このエラーを修正するには、エラーメッセージを読み、それを使用してJSONデータを修正する方法を説明する必要があります。または、try…exceptブロックを使用して、エラーをキャッチして処理することもできます。

Pythonコーディングについてもっと知りたいですか? Pythonの学習方法ガイドをお読みください。 Pythonの学習方法に関する専門家のアドバイスと、知識の構築に役立つ学習リソースのリストがあります。


  1. Pythonでのデータ分析と視覚化?

    Pythonは、主にnumpy、pandas、matplotlib、seabornなどのデータ分析と視覚化のための多数のライブラリを提供します。このセクションでは、numpyの上に構築されたオープンソースライブラリであるデータ分析と視覚化のためのpandasライブラリについて説明します。 これにより、迅速な分析とデータのクリーニングと準備を行うことができます。Pandasには、以下で説明する多数の組み込みの視覚化機能も用意されています。 インストール パンダをインストールするには、ターミナルで以下のコマンドを実行します- pipinstall pandas Orweにはanacondaが

  2. Python Whileループ:イントロと説明

    コーディングとは、(もちろん)他の人を助けるためのものを構築することです。ただし、プログラムやソフトウェアの作成は、何よりも反復的または複雑なタスクの自動化と関係があります。 Pythonのwhileループを使用すると、一連のコードを繰り返して、一度に多くのアクションを自動化できます。 この投稿では、Pythonのwhileループの使用方法を紹介します。まず、whileループの機能と、それが最適に使用される場所について説明しましょう。 Pythonのwhileコマンドの紹介 whileループの作成に入る前に、シーンを設定しましょう。簡単に言うと、whileコマンドは、条件(「式」)が満たさ