144. JSON data type以外のdata typeをserialize/deserializeする
シェアしよう
少し工夫が必要 - accepted / - tried
無論、JSON.parse() とJSON.stringify()は無論JSON data typeしかサポートしません。
JSON.stringify({a:1n}) // Error
またundefined
は無視されるか、null
に変換される。
JSON.stringify([undefined]) // "[null]"JSON.stringify({a: undefined }) // "{}"
NaN
と Infinity
もnull
と扱われる。
JSON.stringify([NaN, Infinity]) // "[null,null]"JSON.stringify({a: NaN, b:Infinity}) // "{"a":null,"b":null}"
詳細はMDNへどうぞ。
それ以外のdata typeをserializeしたい時はたまにありますね。
では、以下のdata typeをサポートするserialize/deserialize 関数を作ってください
- primitives (symbol を除く)
- object literals
- array
Object literals と array は上記のprimitiveを含めるかまたはnestされます。
下記のコードは動く想定でコードを書いてください。
parse(stringify([1n, null, undefined, NaN])) // [1n, null, undefined, NaN]parse(stringify({a: undefined, b: NaN}) // {a: undefined, b: NaN}
JSON.stringify() と JSON.parse() を使っても良いです。