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

Salman Mehmood 2023年6月21日
  1. Python で JSON オブジェクトをデコードする
  2. JSON 文字列を Python オブジェクトにデコードする
  3. Python オブジェクトを JSON 文字列にエンコードする
Python ValueError: 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 ファイルの間違ったパスを指定している場合があります。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Python Error