Javascript 像数组一样访问json对象中的元素

Javascript 像数组一样访问json对象中的元素,javascript,arrays,json,object,properties,Javascript,Arrays,Json,Object,Properties,可能重复: 我有一个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"] ] 它

可能重复:

我有一个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];
这显然不起作用,所以我的问题是我怎么做


我是否需要解码它或其他什么,如果需要,如何解码?

我注意到一些语法错误,但除此之外,它应该可以正常工作:

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-arr=[
[“Blankaholm”,“Gamleby”],
["2012-10-23", "2012-10-22"],

[“Blankaholm.Under natten har det varit inbrott”,“E22 i med Gamleby.Singelolycka.En bilist har.”,//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...

或者,在最后的手段中,如果你不想改变你的结构,你可以这样做:

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

通过使用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];

严格地说,那不是JSON对象。那是数组数组。@NemesisX00严格地说,它是完全有效的JSON:@GeorgeP它是有效的JSON。但不是JSON对象。@NemesisX00没有JSON对象。你为什么要避免使用普通的键:值语法?看起来像
jsonObj一样简单=[{“城市”:“Gamleby”,“日期”:“2012-10-23”,“描述”:“…”,“坐标”:[54.xx,16.xx]},{…}]
这种方法也更具可扩展性/可预测性。您可以通过
for(in)横切对象中的字段
loops.Yes@JeffreySweeney,事实上,第一个示例是我建议的类似于此的数据结构的示例。您正在将JavaScript数据结构作为JavaScript程序的一部分编写。问题是显示的结构是JSON数据,而不是JavaScript程序。数据需要经过解析才能使用。@我编写的系统作为JavaScript变量来明确示例。如果删除
var jsonObject
并将数据结构放入JSON字符串中进行解析,它就是有效的JSON。这并不清楚OP是否有JSON数据。这会使它看起来好像不需要解析。+1啊,这个站点上唯一了解JSON的人!…哦,还有它结果是OP!:d解析的数据与本例中的原始数据相同(减去第三个索引中缺少的双引号)。
JSON.parse()
将用于将此对象的字符串表示形式转换回对象(或
JSON.stringify()
的结果)@JeffreySweeney:OP收到JSON数据作为对AJAX请求的响应,或者来自cookie或类似的东西,需要对其进行解析。原始数据以Unicode文本的形式到达,然后进行解析,然后在程序中使用。这就是JSON的要点。如果它是
var
语句的一部分(而不是存储为字符串),那么它就不是JSON。如果它作为字符串存储在
var
中,那就太奇怪了。
var parsedData = JSON.parse(jsontext);
var cities = parsedData[0];