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 }) // "{}"

NaNInfinitynullと扱われる。

JSON.stringify([NaN, Infinity]) // "[null,null]"
JSON.stringify({a: NaN, b:Infinity}) // "{"a":null,"b":null}"

詳細はMDNへどうぞ。

それ以外のdata typeをserializeしたい時はたまにありますね。

では、以下のdata typeをサポートするserialize/deserialize 関数を作ってください

  1. primitives (symbol を除く)
  2. object literals
  3. 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() を使っても良いです。

エッジケースを網羅しよう。

(1)
(7)