JSON.parse()でjson文字列をデコード(パース)

JavaScriptのJSONオブジェクトを使うと、json文字列をデコードして「JavaScriptのオブジェクト」にすることができます。

たとえば、以下のjson文字列をJSON.parse()でデコードするとどうなるか見てましょう。

{"a":1, "b":2}

ブラウザのアドレス欄に以下の文字列を入れてみてください。

javascript:alert(JSON.parse('{"a":1, "b":2}'))

JSON.parse()に渡すjson文字列は、厳密な書式に従ってプロパティ名を「""」で囲う必要がある点に注意しましょう。JavaScriptのコードで直書きするオブジェクト定義では不要ですが、parseするjson文字列では""で囲わないとエラーになります。

実行すると、「object」と表示されました。つまり、JSONからJavaScriptのオブジェクトが作られたわけです。実際に、値が正常に格納されているかも確認してみましょうか。

javascript:alert(JSON.parse('{"a":1, "b":2}').a)

として「a」の値を見てみると・・・ちゃんとjsonに格納した「1」の値が表示されました。

json文字列のデコードは、JavaScriptのコードを評価して実行する「eval」でも可能です。こちらは、文字列を「JavaScriptのコード」として実行するため""がなくても大丈夫。ただ、eval()は渡されたコードをそのまま実行してしまうため、特に「外部から取得した文字列」を渡す時などにはセキュリティ上の問題が生じます。