13

可能重复:
我有一个嵌套的数据结构/JSON,我怎样才能访问一个特定的值?

我有一个 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];

这显然不起作用所以我的问题是我该怎么做?

我需要解码它还是什么,如果需要,怎么做?

4

4 回答 4

24

我找到了解决这个问题的直接方法,使用 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];
于 2013-01-18T22:13:34.657 回答
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
于 2013-01-18T22:01:31.740 回答
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
于 2013-01-18T22:00:21.860 回答
0
var coordinates = [jsonObject[3][0], 
                   jsonObject[3][0],
                   jsonObject[4][1], 
                   jsonObject[4][1]];
于 2013-01-18T22:06:18.963 回答