読者です 読者をやめる 読者になる 読者になる

順次、選択、そして繰り返し

プログラミングのことやITのこと、たまに演劇のことも書きます。

JSONとJavaScriptオブジェクトの違い

勘違いしてたことだったのでメモ。

サーバー(Java)でMap型のオブジェクトをGSONやJSONICJSONに変換し、
そのデータをクライアント(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()の意味がわかってきた。