可能重复:
I have a nested data structure / JSON, how can I access a specific value?
我有一个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];
这显然不起作用所以我的问题是我该怎么做?
我是否需要对其进行解码,如果是这样的话?
答案 0 :(得分:23)
我找到了一种解决这个问题的直接方法,使用了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];
答案 1 :(得分:4)
你似乎是一个多数组,而不是一个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
答案 2 :(得分:2)
我注意到了一些语法错误,但除此之外,它应该可以正常工作:
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
答案 3 :(得分:0)
var coordinates = [jsonObject[3][0],
jsonObject[3][0],
jsonObject[4][1],
jsonObject[4][1]];