外部より JSON フォーマットのデータを取得した時点では「文字列」ですから、それを JavaScript で使うようにする方法は一般的ですが、そこから「先」は結構多用で一般的では無いような気がします。 そもそも、JSON の a["a2"] は、連想配列のように見えますが、特殊文字で定義されたプロパティを参照する為の書式ですし。 また、eval 使うにあたって、配列はそのままであるとか、for in も結構実際に使うと面倒な構文であったりします。 JavaScript は、自分が知ってる言語の中では、最も難解で不可思議な機能を持ったものだと思っています。
<script type="text/javascript"> function scriptTest(evt) { // JSON 文字列を実体に変える一般的では無い方法 var x = (new Function( 'return {"a1":"Finction","a2":"オブジェクトの","a3":"テスト"}' ))(); alert(x.a1+x.a2+x.a3); // JSON 文字列 var str_json = '{"a1":1,"a2":2,"a3":3}'; // オブジェクト化 var a = eval('(' + str_json + ')'); // プロパティとして参照 alert( a.a2 ); // 特殊文字のプロパティを参照する書式 alert( a["a2"] ); // 配列文字列 var arr_str = '["a1","a2","a3"]'; // 配列化 a = eval(arr_str); // 配列として参照 alert( a[1] ); // 文字列リストに変換 alert( a.join(",") ); // リスト文字列を配列化 a = 'a1,a2,a3'.split(","); // 配列として参照 alert( a[1] ); // 文字列リストに戻す alert( a.join(",") ); // 配列を、JSON 文字列に変換 var str = ""; for( i = 0; i < a.length; i++ ) { if ( i != 0 ) { str += ","; } str += '"'+i+'":"'+a[i] + '"'; } // オブジェクト化 a = eval('({' + str + '})'); // 特殊文字のプロパティを参照 alert( a["1"] ); // オブジェクト内のプロパティの一覧 for( x in a ) { alert( x + ":" +a[x]); } } </script> <input type="button" value="実行" onclick='scriptTest(event);'>
タグ:JSON javascript
|
【JavaScript オブジェクトの最新記事】
- JavaScript : window オブジェクトのプロパティとしてグローバル変数を定義する
- ほぼ、Google Chrome 限定ですが Web Speech API の現時点での実装と問題点回避方法
- Google Chrome での音声認識処理
- JavaScript でテーブル要素の td をクリックしてテキストを選択する / Range オブジェクト
- Google Chrome で音声認識の結果をブログの投稿テキストエリアに転送するブックマークレット
- JavaScript の String と Date オブシェクトに、9999/99/99 書式の文字列日付を取り出すメソッドを追加する
- JavaScript オブジェクト作成の4態
- JavaScript の function を new したものが、JSON フォーマットで記述した『Object』と同じである事のテスト
- JavaScript による半角と全角の相互変換(カタカナを除く)完成版
- Three.js で行われている整然としたクラス作成
- JSON オブジェクトの stringify メソッドの第3引数の使い方
- JS : 自分用名前空間を使ってページのロードイベントを登録
- Object.prototype が window オブジェクトに適用されるおはなし
- JS : クロスドメインの IFRAME からデータを JSON 形式で引き渡す
- JavaScript : 右から指定した文字数を取りだす right メソッドを String オブジェクトに追加
- JavaScript : ネームスペースの作成
- JavaScript : HTMLの要素内のイベント記述で複雑な処理を書く方法( 関数を定義したく無い場合 )
- JavaScript : 無名関数(メソッド)の実行
- JavaScript : Numberオブジェクトに16進数文字列に変換して指定した長さで前にゼロを付けるメソッドを追加する
- JavaScript : String オブジェクトの replace メソッドの第二引数に関数を指定する一括置き換え処理