回答:
JSONは、オブジェクトを文字列にエンコードする形式です。シリアライゼーションその文字列にオブジェクトを変換するための手段、およびデシリアライゼーションは、その逆の操作( - >オブジェクト変換文字列)です。
データを送信したりファイルに保存したりする場合、データはバイト文字列である必要がありますが、複雑なオブジェクトがこの形式であることはほとんどありません。シリアル化により、これらの複雑なオブジェクトをバイト文字列に変換して使用できます。バイト文字列が送信された後、受信者はバイト文字列から元のオブジェクトを回復する必要があります。これは逆シリアル化と呼ばれます。
たとえば、次のオブジェクトがあるとします。
{foo: [1, 4, 7, 10], bar: "baz"}
JSONにシリアル化すると、文字列に変換されます。
'{"foo":[1,4,7,10],"bar":"baz"}'
どこにでも保管または送信できます。次に、受信者はこの文字列を逆シリアル化して、元のオブジェクトを取得できます。{foo: [1, 4, 7, 10], bar: "baz"}
。
"{foo: [1, 4, 7, 10], bar: "baz"}"
データストレージのコンテキストでは、シリアル化(またはシリアル化)は、データ構造またはオブジェクトの状態を(たとえば、ファイルまたはメモリバッファーに)保存または(たとえば、ネットワーク接続を介して)送信できる形式に変換するプロセスです。リンク)、後で再構築されます。[...]
一連のバイトからデータ構造を抽出する反対の操作は、逆シリアル化です。ウィキペディアから
Pythonでは、「シリアル化」は、指定されたデータ構造(aなどdict
)を有効なJSONペンダント(オブジェクト)に変換する以外に何も行いません。
True
はJSONに変換されtrue
、辞書自体は引用符で囲まれます。True
/ False
、true
/false
json
は、シリアル化を行う標準的な方法です。コード例:
data = {
"president": {
"name": "Zaphod Beeblebrox",
"species": "Betelgeusian",
"male": True,
}
}
import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize
# serialized json_data now looks like:
# {
# "president": {
# "name": "Zaphod Beeblebrox",
# "species": "Betelgeusian",
# "male": true
# }
# }
ソース:realpython.com
Pythonを使用したシリアライズとデシリアライズの説明
Pythonでは、pickleモジュールがシリアル化に使用されます。そのため、シリアル化プロセスはPythonでは酸洗いと呼ばれます。このモジュールはPython標準ライブラリで利用できます。
ピクルを使用したシリアル化
import pickle
#the object to serialize
example_dic={1:"6",2:"2",3:"f"}
#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")
#Time to dump
pickle.dump(example_dic,pickle_out)
#whatever you open, you must close
pickle_out.close()
PICKLEファイル(メモ帳などのテキストエディターで開くことができます)には、次の(シリアル化されたデータ)が含まれています。
€} q(KX 6qKX 2qKX fqu。
ピクルを使用した逆シリアル化
import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)
出力:
{1: '6'、2: '2'、3: 'f'}