オブジェクトのシリアライズ
javascriptのオブジェクトのシリアライズについて、試してみます。
オブジェクトのシリアライズは、一度シリアライズしたオブジェクトを元に戻せるような文字列に変換します。
他のプログラム言語にもあるように、シリアライズ操作はプログラミングをするうえで要所で使う場面が出てきます。
ネイティブ関数の使用
まず、オブジェクトをシリアライズするケースからです。
javascriptのネイティブ関数として、JSON.stringify()という関数が用意されています。
逆に一度シリアライズした文字列をアンシリアライズ(元に戻す)場合は、
JSON.parse()という関数が用意されています。
実際にシリアライズを試してみます
まずは、検証用オブジェクトをシリアライズして、ブラウザの開発ツールでログ出力してみます。
//テスト用オブジェクトの用意 let test1 = { a: '10', b: '20', get access_a() { return this.a; } } //オブジェクト「test1」をシリアライズします let s_obj = JSON.stringify(test1); console.log(s_obj); //出力結果は、以下のようになる {"a":"10","b":"20","access_a":"10"}
以上のような出力結果になりました。
次にアンシリアライズを試してみます
上記の例で使用した変数を、そのままアンシリアライズしてみます。
//(先ほどシリアライズした際の変数を使用)アンシリアライズ let us_obj = JSON.parse(s_obj); console.log(us_obj); //出力結果 Object { a: "10", b: "20", access_a: "10" }
出力結果は上記のようになります。
ブラウザごとに出力結果の表示方法は変わるので、見え方は異なりますが、オブジェクトの内容が列挙されます。
JSON形式について
json形式はjavascrptでプログラムする際に頻繁に使用するデータ形式になります。
正式には「Javascript Object notation」という名称になり、javascriptでオブジェクトリテラルや配列リテラルににたデータ形式でデータ構造を表したり、保持したりします。
シリアライズ可能なものと不可能なもの
シリアライズはjavascriptの値を全てサポートしているわけではないです。
次にサポートしているものと、サポートしていないものを整理してみます。
サポートしているもの
オブジェクト 文字列 配列 数値 true false null NaN Infinity Dateオブジェクト
サポートされていないもの
Function RegExp Error undefined