JSON形式のデータは次のような文字列で表される。
[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]
JavaScriptではそのまま配列変数として使える。
※この場合は2次元の配列となる。
recs=[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}];
alert(recs[1]["name"]);
alert(recs[1]["name"]);
このようにすると「satou」と表示される。
※0番目からカウントしたときの1番目の「name」である「satou」が表示される。
JSON形式のデータが外部ファイルのときは次のようにする。
※この例では外部ファイルは「test.json」である。
req = new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET","test.json",false);
req.send();
text=req.responseText;
recs=eval("("+text+")");
req.open("GET","test.json",false);
req.send();
text=req.responseText;
recs=eval("("+text+")");
ここでポイントはevalを使うことである。
単に「recs=text」としてしまうと
recs='[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]';
と同じことになり、文字列として読み込んでしまう。
evalを使うとJavaScriptで使える形式に変換してくれる。
JSONはXMLよりもシンプルであり、JavaScriptにおいてはCSVよりも簡単に扱える。
text="1,suzuki;2,satou";
を配列に読み込むには
recs=new Array();
lines=text.split(";");
for(i=0;i<lines.length;i++){
recs[i]=lines[i].split(",");
}
lines=text.split(";");
for(i=0;i<lines.length;i++){
recs[i]=lines[i].split(",");
}
のような手順が必要である。
JSONならば
text='[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]';
recs=eval(text);
recs=eval(text);
で済んでしまう。
JSON形式のデータは途中に改行が入っていても構わない。また入れ子にすることもできる。
[
{"id":"1","name":"suzuki"},
{"id":"2","name":"satou"},
{"id":"3","name":"yamada",
"kodomo":{"namae":"ichiro","age":"5"}
}
]
{"id":"1","name":"suzuki"},
{"id":"2","name":"satou"},
{"id":"3","name":"yamada",
"kodomo":{"namae":"ichiro","age":"5"}
}
]
このような書き方ができる。
recs[2]["kodomo"]["namae"]
とすると「ichiro」が取得できる。
また
recs[2].kodomo.namae
と書いても取得できる。
コメント
[…] デコードできなかったらこのへんでJSONの構成を確認。→ JSONに関するメモ […]