ホームページ >バックエンド開発 >Python チュートリアル >シリアル化と逆シリアル化の詳細な紹介
1. シリアル化と逆シリアル化の概念
オブジェクトをバイト列に変換するプロセスをオブジェクトのシリアル化と呼びます。
バイトシーケンスをオブジェクトに復元するプロセスは、オブジェクトの逆シリアル化と呼ばれます。
オブジェクトのシリアル化には主に 2 つの用途があります: 1) オブジェクトのバイト シーケンスをハードディスク (通常はファイル) に永続的に保存します。
2) オブジェクトのバイト シーケンスをネットワーク上に送信します。
"sb",
"test":"hard"}
with
"file",) "w") as f: f.write(json.dumps(info))
上記のコードは、json を使用して情報辞書の情報をファイルに書き込みます。ファイルには文字列形式の情報またはバイナリ ファイル情報のみを保存でき、ファイルに入力される情報はすべて文字列型であるため、数値などの情報は保存できません。
jsonデシリアライズの処理:
'' with open("file","r") as f: data = json.loads(f.read() ) print(data)
print(type( data))
print(data["alex"])
{'test': 'hard', 'alex': 'sb'} 次のように、シリアル化と逆シリアル化に他のメソッドを使用することもできます。次のように、文字列情報を元のスタイルに変換できる関数 eval() があることがわかっています。 ,33, 33] with open("test.text","w") as f: import json info = {"alex": with open( "w") as f: json.dump(info , f) import json
上記のコードは、以下に示すように、json 形式で保存された情報を読み取ります。
sb
上記のコードは実際には文字列情報を辞書に読み込む機能を実装しています。逆シリアル化は、最初に元の形式を文字列に変換し、それを読み取って対話を実現するプロセスです。
f.write(
str(info)) #Use wirte( )はファイルに文字列形式の情報のみを書き込むことができ、他の種類の情報を書き込むことはできません
with open("test.text","r")
as f_obj: data = f_Obj.read( )
data = eval (データ) Print (Type (データ))
Print (データ)
プログラムは次のように実行されます: この関数はシリアル化とデシリアライズの処理も実装していますが、シリアル化とデシリアライズは同じプログラム内で実装されているため、他のプログラムに eval() があるかは不明ですが、json はすべてのプログラミング言語をサポートしているため、json は現在一般に、異なるプログラミング言語間の情報対話を実現するために使用されます。 ダンプとロードも上記のダンプとロードの機能を実装しますが、実装方法が異なり、次のように構文が若干異なります: ダンプのシリアル化:
"sb",
"test":"hard"}
load() 逆シリアル化:
'''逆シリアル化の始まりは、異なるプログラミング言語の相互作用を実現するためにdumpから情報を抽出することです'''
with open("file ", "r") as f:
,
上記のプログラムは、シリアル化と逆シリアル化、ダンプ(情報、ファイルパス)、ロード(ファイルパス)、どのファイルから読み取るか、情報を取得する機能を実装しています。
異なるプログラム間のデータ交換を実現します。
異なるプログラム間のデータ交換、または文字列情報を元の形式に変換する eval() 関数も非常に強力で、文字列情報を次のように変換できます。以下: >>> dic = "{'alex':'sb','try':'workhard'}" >>> data = eval(dic) >> ;> data {'try': 'workhard', 'alex': 'sb'} プログラムはダンプとロードを 1 回のみ行い、複数回ダンプすることはできません。ダンプは複数のファイルに実装されています。
以上がシリアル化と逆シリアル化の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。