オブジェクトを含むJSON配列を取得する関数があります。この関数では、配列をループしてプロパティにアクセスし、そのプロパティを使用することができます。こんな感じです。
関数に渡す変数は次のようになります。
[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]
function test(myJSON)
{
// maybe parse my the JSON variable?
// and then I want to loop through it and access my IDs and my titles
}
この問題を解決する方法はありますか?
これは単一のJSONオブジェクトではありません。JSONオブジェクトの配列があります。まず配列をループしてから、各オブジェクトにアクセスする必要があります。次のキックオフの例が参考になるかもしれません。
var arrayOfObjects = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}];
for (var i = 0; i < arrayOfObjects.length; i++) {
var object = arrayOfObjects[i];
for (var property in object) {
alert('item ' + i + ': ' + property + '=' + object[property]);
}
// If property names are known beforehand, you can also just do e.g.
// alert(object.id + ',' + object.Title);
}
JSONについてもっと知りたい方は、この記事をご覧ください。
Update: JSONオブジェクトの配列が実際にプレーンな文字列として渡された場合、ここでは確かにeval()
が必要になります。
var string = '[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]';
var arrayOfObjects = eval(string);
// ...
オブジェクトを含むJSON配列」とは、JSONを含む文字列という意味でしょうか?
そうであれば、安全な var myArray = JSON.parse(myJSON)
メソッド(ネイティブまたはJSON2を使ってインクルードされたもの)、または安全な var myArray = eval("(" + myJSON + ")")
が使えます。
その後は普通に配列を反復していくだけです。
for (var i = 0; i < myArray.length; i++) {
alert(myArray[i].Title);
}
あなたの質問は少し不完全な気がしますが、あなたが求めているのは、コードからJSONにアクセスできるようにする方法だと思います。
上記のようなJSONの文字列があれば、次のようにすればよいでしょう。
var jsonObj = eval('[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]');
とすれば、これらの変数にjsonObj[0].idなどでアクセスできます。
もしそれがあなたの言いたいことと違っていたら、教えてください。
M