#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;