HOWTO · Python

Python ValueError: JSON オブジェクトをデコードできませんでした

名前エラー、Python オブジェクトを JSON にエンコードする方法、および隣接する文字列を Python オブジェクトにデコードする方法について説明します。 また、JSON データの解析に失敗する理由についても学びます。

このページの内容

名前エラー、Python オブジェクトを JSON にエンコードする方法、および隣接する文字列を Python オブジェクトにデコードする方法について説明します。 また、JSON データの解析に失敗する理由についても学びます。

Python で JSON オブジェクトをデコードする

json モジュールをインポートすることから始めましょう。このセッションでは、Python オブジェクトを隣接するテキストにエンコードおよびデコードすることを計画しています。 次の行に切り替えて、いくつかのキーと値のペアを持つ小さな文字列全体を格納する変数を定義します。

これを印刷すると、変数で定義したとおりに印刷されていることがわかります。つまり、文字列です。

コード:

import json

Sample_json = '{"Employee_Name":"Garry","Employee_Age":29}'
print(Sample_json)
# We can see the type of this Sample_json using the type() function
print(type(Sample_json))

出力:

{"Employee_Name":"Garry","Employee_Age":29}
<class 'str'>

JSON 文字列を Python オブジェクトにデコードする

次に、それを Python オブジェクトにデコードする必要があり、正確に Python 辞書に変換されます。 json.loads() メソッドを使用して隣接する文字列をデコードし、同時にオブジェクトのタイプも出力します。

import json

Sample_obj = json.loads(Sample_json)
print(Sample_obj)
print(type(Sample_obj))

出力:

{'Employee_Name': 'Garry', 'Employee_Age': 29}
<class 'dict'>

Python オブジェクトを JSON 文字列にエンコードする

json.loads() メソッドを使用して、JSON 文字列を Python 辞書オブジェクトにデコードできることを確認しました。 Python オブジェクトを変換する別の例、または Python オブジェクトを JSON 文字列にエンコードする方法を見てみましょう。

Sample_json2 というもう 1つのオブジェクトを定義しましょう。これは辞書になります。 これを JSON に変換するには、json.dumps() メソッドを使用します。

次に、JSON 文字列にエンコードするオブジェクトを提供します。 これで、dumps() メソッドが生成した出力のタイプがわかり、そのタイプが str(string) であることがわかります。

コード:

import json

Sample_json2 = {"Employee_Name": "Garry", "Employee_Age": 29}
print(Sample_json2)
print(type(Sample_json2))
temp = json.dumps(Sample_json2)
print(temp)
print(type(temp))

出力:

{'Employee_Name': 'Garry', 'Employee_Age': 29}
<class 'dict'>
{"Employee_Name": "Garry", "Employee_Age": 29}
<class 'str'>

dumps() メソッドは Python オブジェクトを隣接する文字列にエンコードし、loads() メソッドは JSON 文字列を Python オブジェクトにデコードします。 このアプローチに従えば、JSON データを解析するときに時々発生する値エラーは発生しません。

Python で JSON データの解析に失敗する理由はたくさんあります。そのうちの 1つは、空の文字列または空のファイルをデコードしようとしている場合や、JSON ファイルの間違ったパスを指定している場合があります。