web-dev-qa-db-ja.com

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

私はJSONが初めてです。ここで、Flash ActionScript 3.0にJSONを使用する必要があります。そのため、JSONのライブラリを1つ見つけました。「デシリアライズ」と「シリアライズ」という用語を見てきました。彼らはどういう意味ですか?

90
coderex

JSONは、オブジェクトを文字列にエンコードする形式です。 シリアル化 は、オブジェクトをその文字列に変換することを意味し、逆シリアル化はその逆の操作です。

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

たとえば、オブジェクトがある

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

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

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

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

165
kennytm

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

ウィキペディアから: シリアル化

Pythonの例

したがって、たとえばPython "serialization"は、指定されたデータ構造(たとえば、dict)を有効なJSONペンダントに変換する以外に何もしません。

したがって、Python TrueはJSON trueに変換され、辞書自体は引用符でカプセル化されます。

Python module 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
#   }
# }

Python辞書とJSONの違いをブール値で簡単に見つけることができます。

  • PythonTrue/False
  • [〜#〜] json [〜#〜]true/false

ソース: realpython.com

4
winklerrr