Разбор JSON в многомерный массив JS

#javascript #arrays #json #multidimensional-array

#javascript #массивы #json #многомерный массив

Вопрос:

У меня есть файл JSON, из которого я хотел бы создать многомерный массив. Эта информация хранится в файле JSON.

Вот данные JSON.

 {
  "table": {
    "columnNames": ["column1", "column2", "column3", "column4"],
    "columnTypes": ["String", "String", "String", "String"],
    "rows": [
      ["data00", "data01", "data02", "data03"],
      ["data10", "data11", "data12", "data13"],
      ["data20", "data21", "data22", "data23"],
      ["data30", "data31", "data32", "data33"]
     ]
   }
}
  

Мне нужно создать массив массивов из объектов в разделе «строки».

Будем признательны за любую помощь!

Спасибо!!!

Ответ №1:

Как только вы проанализируете JSON, свойство «table.rows» уже будет многомерным массивом (точнее, в двух измерениях). Все, что вам нужно сделать, это получить к нему доступ:

 var array2D = parsed.table.rows;
  

Что касается синтаксического анализа, вам, вероятно, следует использовать что-то вроде анализатора Крокфорда:

 var parsed = JSON.parse(rawStringOfJSON);
  

Комментарии:

1. Как бы мне получить rawStringofJSON из файла .json?

2. Ну, это зависит от вашего серверного приложения. Обычно вы извлекаете его с помощью какого-либо взаимодействия AJAX, но его можно включить в страницу другими способами. Вероятно, это должен быть отдельный вопрос, поскольку на самом деле он не имеет большого отношения к аспекту синтаксического анализа JSON.

Ответ №2:

Сначала вам нужно преобразовать строку в объект JS.

Использовать json2.js из http://www.json.org/js.html

Пожалуйста, имейте в виду, что вам нужно добавить json2.js если вы считаете необходимым поддерживать старые браузеры. Новый браузер имеет встроенную поддержку JSON

И десериализовать строку в object

 var myObject = JSON.parse(myJSONtext);
  

И теперь вы можете получить доступ

 myObject.table.rows[1][2]; // yields data12
  

Ответ №3:

Раздел rows уже содержит массив массивов, поэтому просто используйте:

 var result = JSON.parse('{
  "table": {
  "columnNames": ["column1", "column2", "column3", "column4"],
  "columnTypes": ["String", "String", "String", "String"],
  "rows": [
    ["data00", "data01", "data02", "data03"],
    ["data10", "data11", "data12", "data13"],
    ["data20", "data21", "data22", "data23"],
    ["data30", "data31", "data32", "data33"]
   ]
  }
}');

var rows = result.table.rows;