JSONのデシリアライズとシリアライズとは何ですか?


回答:


228

JSONは、オブジェクトを文字列にエンコードする形式です。シリアライゼーションその文字列にオブジェクトを変換するための手段、およびデシリアライゼーションは、その逆の操作( - >オブジェクト変換文字列)です

データを送信したりファイルに保存したりする場合、データはバイト文字列である必要がありますが、複雑なオブジェクトがこの形式であることはほとんどありません。シリアル化により、これらの複雑なオブジェクトをバイト文字列に変換して使用できます。バイト文字列が送信された後、受信者はバイト文字列から元のオブジェクトを回復する必要があります。これは逆シリアル化と呼ばれます。

たとえば、次のオブジェクトがあるとします。

{foo: [1, 4, 7, 10], bar: "baz"}

JSONにシリアル化すると、文字列に変換されます。

'{"foo":[1,4,7,10],"bar":"baz"}'

どこにでも保管または送信できます。次に、受信者はこの文字列を逆シリアル化して、元のオブジェクトを取得できます。{foo: [1, 4, 7, 10], bar: "baz"}


3
@kennytm-物事をネットワーク経由で送信することに頭を抱えようとしています。バイナリエンコーディングを使用するか、json、xml、またはproto bufを使用するかに関係なく、データは、ワイヤーで送信する前に常にバイト単位である必要があります。本当?
通常の2017年

1
@Nirmalはい。___
kennytm 2017年

1
違いを思い出すために使用するニーモニックデバイスは、「シリアル化によってオブジェクトがシリアル番号に変換される」ということです
Janac Meena

1
では、なぜ私たちだけではないのでしょうか"{foo: [1, 4, 7, 10], bar: "baz"}"
パノラマ19.

2
@EnricoMariaDeAngelis JSONプロパティは引用符で囲む必要があります。それは必需品です-wikiの
Cloud

8

データストレージのコンテキストでは、シリアル化(またはシリアル化)は、データ構造またはオブジェクトの状態を(たとえば、ファイルまたはメモリバッファーに)保存または(たとえば、ネットワーク接続を介して)送信できる形式に変換するプロセスです。リンク)、後で再構築されます。[...]
一連のバイトからデータ構造を抽出する反対の操作は、逆シリアル化です。ウィキペディアから

Pythonでは、「シリアル化」は、指定されたデータ構造(aなどdict)を有効なJSONペンダント(オブジェクト)に変換する以外に何も行いません。

  • Python TrueはJSONに変換されtrue、辞書自体は引用符で囲まれます。
  • Python辞書とJSONの違いをブール値で簡単に見つけることができます。
    • PythonTrue/ False
    • JSONtrue/false
  • Python組み込みモジュール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


-3

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'}


4
しかし、ユーザーはJSONを漬け物ではなくて尋ねました。これはややオフトピックです。
smci

これは元の質問です:JSONの逆シリアル化とシリアル化とは何ですか?私はPythonのpickleモジュールを使用してアイデアを実証しました。ツールを使用してアイデアを説明しました。あなたはアイデアよりもツールに焦点を合わせています。
Asif
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.