2016年03月01日

JavaScriptの文字列をオブジェクト型配列に変換

開発部だより 第306回


JavaScriptの文字列からオブジェクト型配列に変換する方法を調べていました。
いくつか方法がありますが、どれも微妙に違うのでちょっとまとめてみます。

◆eval()で評価する
var str = '{a:"json"}';
var obj = eval(str);
alert(obj);

真っ先に思いついたこの方法ですが、'{a:"json", b:"freddy"}'と要素が複数になると使えないという制限があります。evalの危険性の問題はおいておくとしても使い所は限られてしまいます。

◆JSON.parseを使用する
JSON文字列をJavaScriptオブジェクトに変換する専用の命令です。
ECMAScript 5.1で定義されて現在のブラウザーならほぼ使用できます。
var str = '{"a":"json", "b":"freddy"}';
var obj = JSON.parse(str);
alert(obj.a);

jQueryの、$.parseJSON(str);を使用しても同じです。
これならオブジェクトが複数になっても問題ありませんし、次のようにオブジェクトを入れ子にすることもできます。
var str = '{"x": {"a":"json", "b":"freddy"}, "y": {"a":"damian", "b":"chucky"}}';

ただ条件としてプロパティもダブルクォーテーションで囲わなければいけないし、シングルクォーテーションではエラーになるのでそこは注意が必要です。

◆もう一つありました「JSONらしき文字列をオブジェクトに変換するJavaScript
var str = '{a:"json", b:"freddy"}';
var obj = (new Function("return " + str))();

この方法ならオブジェクトが複数でも問題ありませんし、プロパティをダブルクォーテーションで囲わなくてもOKです。ただこの方法は基本的にeval()と同じなので少し注意が必要です。

どうやらどの方法もどれも一長一短のようなので、状況によって使い分ける必要がありそうです。
型変換というと文字列型を数値型("01" ⇒ 1)のような使い方が普通だと思いますが、jsonがオブジェクトになるような融通のきくところはJavaScriptのいいところですね。
posted by 開発部OliveDrab at 13:59
開発部だより | コメント(0) | トラックバック(0)
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック