Pythonのシリアライズとデシリアライズ(ピクルス、JSON)

Pythonのシリアライズとデシリアライズ(ピクルス、JSON)

1.いわゆるシリアライズとデシリアライズ:

(1)の配列:データがメモリから読み出され、又は送信処理に格納されてもよいが、シリアル化と呼ばれ
、良好なデータが格納されている、と呼ばれる、元のデータ型に変換される:(2)デシリアライズ直列化復元

注意:プログラムが実行され、データがメモリに保存されているのではなく、プログラムの再実行が、ハードディスク上のデータが初期化されます、(ファイルと呼ばれるハードディスクに格納されている)に格納されます。

2.ピクルス

ピクルスは、Pythonでのみ使用することができ、及びPythonの漬物の異なるバージョンは、互いに互換性がない場合があり、従って、ピクルスの一般的な使用は、いくつかの重要なデータを保存することは問題ではない正常にデシリアライズすることができません。

(1)、負荷ダンプ

dumpOBJファイルプロトコル=なし*fix_imports =真

loadファイル、  *、  fix_imports =真、  エンコーディング= "ASCII" 、  エラー= "厳しいです"

インポートピクルス ITER(範囲(= 10 )) オープン(と" test.pk "、MODE = " WB " :FPとして)
    pickle.dump(それは、FP) オープンで" test.pk "モード=、" RB " )FPとして:
    RES = pickle.load(FP)

  

(2)、ロードダンプ

dumpsOBJプロトコル=なし*fix_imports =真

loadsbytes_object、  *、  fix_imports = Trueを、  符号化= "ASCII" 、  "厳密な"エラー=

インポートピクルス
LSを = [1、23、23、。8、12 65である0]
任意の一つのバイトにオブジェクトの配列:のシーケンスをダンプ 
RES = pickle.dumps(LS)
 プリント(RES、タイプ(RES))
RES = pickle.loads(RES)
 を印刷(RES)

  

3. JSON(ダンプ、ロード、ダンプ、ロード)

 オブジェクトは、直列化データが文字列であるジャバスクリプト言語、標準JSONによって表され、それは広く、他の言語に適用されます。

次のようにデータ型PythonのJSONデータ型との対応は以下のとおりです。

JSON  パイソン
オブジェクト{} 辞書
配列[] リスト
STR
int型/リアル int型/フロート/列挙型
真偽 真偽
ヌル 無し

 

(1)、負荷ダンプ

dumpOBJFP*skipkeys = Falseをensure_ascii =真真= check_circularallow_nan =真CLS =なしインデント=なしセパレータ=なしデフォルト=なしsort_keys = Falseを**キロワット

loadFP*CLS =なしobject_hook =なしparse_float =なしparse_int =なしparse_constant =なしobject_pairs_hook =なし**キロワット

 

DIC = { ' 名前'" 黄某某"" 年齢":8、" 性別"" 男性"" 家族":[ ' 爸爸'" 妈妈" ]} 
オープン(と" test.json "、モード= " W "、エンコード= " UTF-8 " FPとして):
    json.dump(DIC、FP、ensure_ascii = False)が
オープンして("test.json FPとして):
    RES = json.load(FP)

  

(2)、ロードダンプ

dumpsOBJ*skipkeys = Falseをensure_ascii =真真= check_circularallow_nan =真CLS =なしインデント=なしセパレータ=なしデフォルト=なしsort_keys = Falseを**キロワット

loadsS*エンコーディング=なしCLS =なしobject_hook =なしparse_float =なしparse_int =なしparse_constant =なしobject_pairs_hook =なし** KW

インポートJSON 
DIC = { ' 名前'" イエローXX "" 年齢":8、" 性別"" 男性"" 家族"" お父さん"" お母さん" ]}
 #1 シリアライズ
'' ' 
ensure_asciiあなたは真=中国= Falseのensure_ascii表示したい場合は
sort_keys =辞書キー(小規模から大規模までのASCIIに従ってデフォルト)の真の一種
「」 'の
RESの =のjson.dumps(DIC、ensure_ascii = Falseのを、sort_keys = TRUE)
 印刷(RES、タイプ(RES))
反序列化 
RES = json.loads(RES)
 プリント(RES、タイプ(RES))

  

4.ピクルスと差JSON

'「」
:違いとピクルス#のJSON二つのモジュールは、
(1)のJSON STR後のシリアル化されたデータを入力し、
    任意のプログラミング言語を識別することができるが、限定でサポートされるデータ型
    連続ダンプをロードJSONは、唯一の連続していませんすべてのデータのうち、
データタイプがバイトピクルスシリアライズされた後(2)、
    すべてのデータ型はしか記憶Pythonの間の伝送のために、変換することができる。
    データの漬物ロード連続、複数のセットが同じファイルに配置することができます
「」「
連続例をダンプし、負荷
「」」
JSONを:連続ダンプが、一度だけデシリアライズ外すべてのデータをロードするために、データ・エラーが生じる
。この過誤を特定、負荷が解決するのに使用することができます
「」 ' 
DIC = { ' A ':1、" B ":2 } 
オープン(と" test.json "、MODE = " W "、エンコーディング= "。8 UTF " FP AS):
    json.dump(DIC、FP)
    fp.write(' \ N- ' 
    json.dump(DIC、FP)
    fp.write(' \ N- ' 
オープン(と" test.json )FP AS:
     #1 RES = json.load(FP)エラー
    のために I におけるFP: #
         サイクル、続いて、辞書にデシリアライズ、行を読み取る 
        RES =のjson.loads(I)
         プリント(RES、タイプ(RES))

 

おすすめ

転載: www.cnblogs.com/trent-fzq/p/10954420.html