JSONとJavaScriptオブジェクトの違い
勘違いしてたことだったのでメモ。
サーバー(Java)でMap型のオブジェクトをGSONやJSONICでJSONに変換し、
そのデータをクライアント(JavaScript)に渡したときに、JSON.parse()することにある疑問が浮かんだ。
あれ?サーバー側でJSON形式にしてるんだからパースする必要あるの?という疑問だ。
今までのJSONに対するイメージ↓
連想配列みたいな形でデータを表現する(JavaScriptのオブジェクトと同じ)
調べてみたら、全然違った。
{key:'value'}
↑これはオブジェクト。
{'key':'value'}
↑これもオブジェクト。
{"key":'value'}
↑これもオブジェクト。
{'key':"value"}
↑これもオブジェクト。
{"key":"value"}
↑これがJSON(オブジェクトでもある)
JSONはキー値がダブルクォーテーションで囲われていないといけないということ。
そしてデータ部分が文字列の場合はデータ部分もダブルクォーテーションで
囲わなければいけないということ。
(シングルクォーテーションではJSONで文字列を表せない。
しかし、数値型やboolean型は囲わない)
なので、これからはJSONを
連想配列みたいな形でデータを表現する(JavaScriptのオブジェクトと同じ)
※キー値がダブルクォーテーションで囲われている必要がある。
さらにデータ部が文字列の場合は文字列にもダブルクォーテーションが必要。
と認識していく。
そう考えるとJavaScriptのオブジェクトとJSONの変換にJSON.parse()とJSON.stringify()の意味がわかってきた。