Python-data-persistence-json-module
Pythonデータの永続性-JSONモジュール
JSONは JavaScript Object Notation の略です。 軽量のデータ交換形式です。 言語に依存しないクロスプラットフォームのテキスト形式で、多くのプログラミング言語でサポートされています。 このフォーマットは、Webサーバーとクライアント間のデータ交換に使用されます。
JSON形式はピクルに似ています。 ただし、ピクルシリアル化はPython固有ですが、JSON形式は多くの言語で実装されているため、普遍的な標準になっています。 Pythonの標準ライブラリのjsonモジュールの機能とインターフェースは、pickleおよびmarshalモジュールに似ています。
pickleモジュールと同様に、jsonモジュールは、PythonオブジェクトをJSONエンコードされた文字列にシリアル化するための* dumps()および loads()関数も提供し、 dump()および load()*関数は、シリアル化された書き込みおよび読み取りを行いますPythonオブジェクトとファイルの間。
- * dumps()*-この関数はオブジェクトをJSON形式に変換します。
- * loads()*-この関数は、JSON文字列をPythonオブジェクトに変換します。
次の例は、これらの関数の基本的な使用法を示しています-
dumps()関数は、オプションのsort_keys引数を取ることができます。 デフォルトではFalseです。 Trueに設定すると、辞書のキーはJSON文字列にソートされた順序で表示されます。
dumps()関数には、数値を値として取るindentと呼ばれる別のオプションパラメータがあります。 印刷出力と同様に、json文字列のフォーマットされた表現の各セグメントの長さを決定します。
jsonモジュールには、上記の機能に対応するオブジェクト指向のAPIもあります。 モジュールには、JSONEncoderとJSONDecoderの2つのクラスが定義されています。
JSONEncoderクラス
このクラスのオブジェクトは、Pythonデータ構造のエンコーダーです。 各Pythonデータ型は、次の表に示すように、対応するJSON型に変換されます-
Python | JSON |
---|---|
Dict | object |
list, tuple | array |
Str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSONEncoderクラスは、JSONEncoder()コンストラクターによってインスタンス化されます。 次の重要なメソッドは、エンコーダクラスで定義されています-
Sr.No. | Methods & Description |
---|---|
1 |
encode() PythonオブジェクトをJSON形式にシリアル化します |
2 |
iterencode() オブジェクトをエンコードし、オブジェクト内の各アイテムのエンコードされた形式を生成するイテレータを返します。 |
3 |
indent エンコードされた文字列のインデントレベルを決定します |
4 |
sort_keys キーをソート順に表示するかどうかをtrueまたはfalseに設定します。 |
5 |
Check_circular Trueの場合、コンテナタイプオブジェクトの循環参照を確認します |
次の例は、Pythonリストオブジェクトをエンコードします。
JSONDecoderクラス
このクラスのオブジェクトは、json文字列でデコードされてPythonデータ構造に戻るのに役立ちます。 このクラスのメインメソッドはdecode()です。 次のコード例は、前のステップでエンコードされた文字列からPythonリストオブジェクトを取得します。
jsonモジュールは、* load()および dump()*関数を定義して、JSONデータをオブジェクトのようなファイル(ディスクファイルまたはバイトストリームなど)に書き込み、それらからデータを読み取ることができます。
投げ捨てる()
この関数は、JSON化されたPythonオブジェクトデータをファイルに書き込みます。 ファイルは「w」モードで開く必要があります。
このコードは、現在のディレクトリに「json.txt」を作成します。 それは次のように内容を示しています-
負荷()
この関数はファイルからJSONデータを読み込み、そこからPythonオブジェクトを返します。 ファイルは読み取り権限で開く必要があります(「r」モードである必要があります)。
例
出力