English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PythonのJSON形式

JSON(Java脚本オブジェクト表示法)は、軽量で広く認められたデータ交換形式です。PythonのJSON形式化技術を使用して、JSON文字列をPythonオブジェクトに変換したり、PythonオブジェクトをJSON文字列に変換したりできます。

これらの機能を使用するには、Pythonのjsonモジュールを使用する必要があります。jsonモジュールはPythonの標準ライブラリに含まれています。したがって、まずはそれをインポートする必要があります。

import json

Pythonオブジェクトを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文字列をPythonオブジェクトに変換します

この場合、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}

PythonのJSONエンコーダとデコーダクラス

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)
おすすめ