Элементы доступа в объекте json, например массив

Возможный дубликат:
У меня есть вложенная структура данных /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];

Это явно не работает, поэтому мой вопрос: как я могу это сделать?

Нужно ли его декодировать или что-то еще, и если да, то как?

Ответ 1

Я нашел прямой способ решить это, используя 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];

Ответ 2

Кажется, что это мульти-массив, а не объект 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

Ответ 3

Я заметил пару синтаксических ошибок, но кроме этого, он должен работать нормально:

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

Ответ 4

var coordinates = [jsonObject[3][0], 
                   jsonObject[3][0],
                   jsonObject[4][1], 
                   jsonObject[4][1]];