Python-data-persistence-json-module

提供:Dev Guides
移動先:案内検索

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オブジェクトに変換します。

次の例は、これらの関数の基本的な使用法を示しています-

import json
   data=['Rakesh',{'marks':(50,60,70)}]
   s=json.dumps(data)
json.loads(s)

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リストオブジェクトをエンコードします。

e=json.JSONEncoder()
e.encode(data)

JSONDecoderクラス

このクラスのオブジェクトは、json文字列でデコードされてPythonデータ構造に戻るのに役立ちます。 このクラスのメインメソッドはdecode()です。 次のコード例は、前のステップでエンコードされた文字列からPythonリストオブジェクトを取得します。

d=json.JSONDecoder()
d.decode(s)

jsonモジュールは、* load()および dump()*関数を定義して、JSONデータをオブジェクトのようなファイル(ディスクファイルまたはバイトストリームなど)に書き込み、それらからデータを読み取ることができます。

投げ捨てる()

この関数は、JSON化されたPythonオブジェクトデータをファイルに書き込みます。 ファイルは「w」モードで開く必要があります。

import json
data=['Rakesh', {'marks': (50, 60, 70)}]
   fp=open('json.txt','w')
   json.dump(data,fp)
   fp.close()

このコードは、現在のディレクトリに「json.txt」を作成します。 それは次のように内容を示しています-

["Rakesh", {"marks": [50, 60, 70]}]

負荷()

この関数はファイルからJSONデータを読み込み、そこからPythonオブジェクトを返します。 ファイルは読み取り権限で開く必要があります(「r」モードである必要があります)。

fp=open('json.txt','r')
   ret=json.load(fp)
   print (ret)
   fp.close()

出力

['Rakesh', {'marks': [50, 60, 70]}]
*json.tool* モジュールには、ファイル内のデータを検証し、きれいにフォーマットされた方法でJSONオブジェクトを出力するコマンドラインインターフェースもあります。
C:\python37>python -m json.tool json.txt
[
   "Rakesh",
   {
      "marks": [
         50,
         60,
         70
      ]
   }
]