次のようなjsonオブジェクトがあります。
[
["Blankaholm", "Gamleby"],
["2012-10-23", "2012-10-22"],
["Blankaholm. Under natten har det varit inbrott", "E22 i med Gamleby. Singelolycka. En bilist har.],
["57.586174","16.521841"], ["57.893162","16.406090"]
]
4つの「プロパティレベル」(都市、日付、説明、座標)で構成されます。
私がやりたいのは、次のような配列のようにこれらのレベルにアクセスできるようにすることです:
var coordinates = jsonObject[4];
これは明らかに機能しないので、私の質問はどうすればいいですか?
デコードする必要がありますか?
JSON.parseを使用して、これを直接解決する方法を見つけました。
以下のjsonが変数jsontextの中にあると仮定しましょう。
[
["Blankaholm", "Gamleby"],
["2012-10-23", "2012-10-22"],
["Blankaholm. Under natten har det varit inbrott", "E22 i med Gamleby. Singelolycka. En bilist har.],
["57.586174","16.521841"], ["57.893162","16.406090"]
]
解決策は次のとおりです。
var parsedData = JSON.parse(jsontext);
これで、次の方法で要素にアクセスできます。
var cities = parsedData[0];
Yourは、JSONオブジェクトではなく、マルチアレイのようです。
配列のようなオブジェクトにアクセスしたい場合は、次のような何らかのキー/値を使用する必要があります。
var JSONObject = {
"city": ["Blankaholm, "Gamleby"],
"date": ["2012-10-23", "2012-10-22"],
"description": ["Blankaholm. Under natten har det varit inbrott", "E22 i med Gamleby. Singelolycka. En bilist har.],
"lat": ["57.586174","16.521841"],
"long": ["57.893162","16.406090"]
}
そしてそれにアクセスする:
JSONObject.city[0] // => Blankaholm
JSONObject.date[1] // => 2012-10-22
and so on...
または
JSONObject['city'][0] // => Blankaholm
JSONObject['date'][1] // => 2012-10-22
and so on...
または、最後の手段として、構造を変更したくない場合は、次のようなことができます。
var JSONObject = {
"data": [
["Blankaholm, "Gamleby"],
["2012-10-23", "2012-10-22"],
["Blankaholm. Under natten har det varit inbrott", "E22 i med Gamleby. Singelolycka. En bilist har.],
["57.586174","16.521841"],
["57.893162","16.406090"]
]
}
JSONObject.data[0][1] // => Gambleby
いくつかの構文エラーに気づきましたが、それ以外は問題なく動作します。
var arr = [
["Blankaholm", "Gamleby"],
["2012-10-23", "2012-10-22"],
["Blankaholm. Under natten har det varit inbrott", "E22 i med Gamleby. Singelolycka. En bilist har."], //<- syntax error here
["57.586174","16.521841"], ["57.893162","16.406090"]
];
console.log(arr[4]); //["57.893162","16.406090"]
console.log(arr[4][0]); //57.893162
var coordinates = [jsonObject[3][0],
jsonObject[3][0],
jsonObject[4][1],
jsonObject[4][1]];