JSON
- プログラムを書くためにJavaを使用して、Pythonで書かれたプログラムは、プログラムがデータ間の2つの交換、言語の所定の共通データ型を必要とする、JSON文字列
1.シリアル
メモリへの又はからのオブジェクト(変数)は、シリアル化プロセスが呼び出された格納することができます
シリアル化の利点:
- 状態を永続:(構造化)がクリアされている前に、プログラムはいくつかの時間のために実行したときに、メモリが恒久的に、データを格納していない、我々はいくつかの時間のために、プログラム上のメモリ内のデータの電源を切るか、プログラムを再起動してください。しかし、電源オフやデータを実行するために(ファイルに保存)現在メモリ内のすべてのデータが保存されているプログラムを再起動する前に、次のプログラムの前に、ファイルからロードされ、その後、シリアル化された、継続することができます。
- クロスプラットフォームのデータ交換:双方はフォーマットの良い実用的な一つのシーケンスを送信および受信することに同意した場合はシリアル化された書き込みのシリアル化ディスクの内容だけでなく、あなたはまた、別のマシンにネットワークを介して送信することができ、それがプラットフォームを破りました/言語差の上限は、クロスプラットフォームのデータ交換を実現もたらしました。
2.jsonのシリアライズ
JSONシリアライズはJavaや他の言語でJSONシリアライズが関与することになります、のpythonに固有のものではありませんので、JSONのシリアライズはクロスプラットフォームのデータ伝送の目的を達成することができます。
JSONデータ・タイプとデータ型対応テーブルパイソン
JSONタイプ Pythonのタイプ {} 辞書 [] リスト 「文字列」 STR 520.13 intまたはフロート 真偽 真偽 ヌル 無し 図に示すように、プロセスのJSONモジュールシリアライゼーションおよびデシリアライゼーション。
3.例シーケンスのデシリアライズ
- 例えば、辞書を取ります
# 序列化:从python的字典(最常用)变成json串, dump
# 反序列化:从json串变成python的字典(最常用),load
import json
dic = {'a': 1, 'b': 'abc', 'c': None}
data = json.dumps(dic) # 序列化到内存中
print(data,type(data)) # 单引号全部变成双引号
# {"a": 1, "b": "abc", "c": null} <class 'str'>
data = json.loads(data) # 从内存中获取json串
print(data,type(data))# 双引号全都变成了单引号
# {'a': 1, 'b': 'abc', 'c': None} <class 'dict'>
with open('test.json','w',encoding='utf8') as fw:# 还可以直接序列化写在文件里
json.dump(dic,fw)
with open(f'{"test"}.json','r',encoding='utf8') as fr: # 直接从文件里取,进行反序列
data = json.load(fr)
print(data)
# {'a': 1, 'b': 'abc', 'c': None}