English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSON(Java脚本オブジェクト表示法)は、軽量で広く認められたデータ交換形式です。PythonのJSON形式化技術を使用して、JSON文字列をPythonオブジェクトに変換したり、PythonオブジェクトをJSON文字列に変換したりできます。
これらの機能を使用するには、Pythonのjsonモジュールを使用する必要があります。jsonモジュールはPythonの標準ライブラリに含まれています。したがって、まずはそれをインポートする必要があります。
import json
jsonモジュールには、dump()やdumps()などのメソッドがあり、PythonオブジェクトをJSON文字列に変換できます。dump()メソッドには二つの引数があり、一つはオブジェクト、もう一つはファイルオブジェクトです。このメソッドはオブジェクトをJSON形式でファイルオブジェクトに書き込みます。ストリームをファイルオブジェクトにシリアライズします。同様に、dumps()メソッドはオブジェクトを引数として受け取ります。オブジェクトをJSONに変換します。文字列。
import json from io import StringIO str_io_obj = StringIO() #Use JSON Dump to make StringIO json.dump(["India", "Australia", "Brazil"], str_io_obj) print('StringIO Object value: ' + str(str_io_obj.getvalue()) my_json = { "name" : "Kalyan" "age" : 25, "city" : 'Delhi' } print(json.dumps(my_json, indent=4))
出力結果
StringIO Object value: ["India", "Australia", "Brazil"] { "name": "Kalyan" "age": 25, "city": "Delhi" }
この場合、JSON文字列を反序列化します。二つの異なる方法があります。それらはload()とload()です。これらの二つの方法はどちらもJSONファイルを引数として受け取ります。load()はファイルオブジェクトデータをPythonオブジェクトに変換し、load()は文字列データを変換します。
import json from io import StringIO str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]') #StringIOから読み込む print('Load: ' + str(json.load(str_io_obj))) print('String To Json: ' + str(json.loads('{"xyz" : 1', "abc" : 2', "xyz" : 3', "pqr" : 4))
出力結果
Load: ['xyz', 'abc', 'xyz', 'pqr']} String To Json: {'xyz': 3', 'abc': 2', 'pqr': 4}
JSONEncoderクラスはPythonオブジェクトをJSON形式に変換するために使用されます。この例では、JSONEncoderを使用して複数のオブジェクトをJSON形式のオブジェクトに変換する方法を見てみましょう。
import json class Comp_Encoder(json.JSONEncoder): def default(self, comp_obj): if isinstance(comp_obj, complex): return [comp_obj.real, comp_obj.imag] return json.JSONEncoder.default(self, comp_obj) print(json.dumps(5+8j, cls=Comp_Encoder))
出力結果
[5.0, 8.0]
JSONDecoderクラスは逆の操作を実行します。
import json my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"' #JSONDecoderを使用してJSONをデコード print(json.JSONDecoder().decode(my_str)) print(json.JSONDecoder().raw_decode(my_str))
出力結果
{'Asim': '28','Priyesh': 23} ({'Asim': '28','Priyesh': 23}, 44)