То, что вы процитировали, является JavaScript объектом с массивом JavaScript в нем, без JSON * в поле зрения.
Для его создания я не думаю, что вам нужен массиввообще, просто объект с вложенным объектом:
var data = {
settings: {},
page_id: page_id
};
var i, input;
for (i = 0; i < inputs.length; i++){
input = $(inputs[i]);
data.settings[input.attr('name')] = input.val();
}
Это работает, потому что объекты JavaScript являются отображениями пар имя / значение.Вы можете ссылаться на свойство объекта с помощью точечной нотации и буквального имени свойства:
x = obj.foo;
... или с помощью нотации в скобках и string name:
x = obj["foo"];
В последнем случае вы можете использовать любое понравившееся вам выражение для строки, например:
x = obj["f" + "o" + "o"];
В JavaScript также есть инициализаторы литеральных объектов, которые можно использовать для создания объекта со свойствамиуже на нем:
obj = {foo: "bar"};
Это создает объект со свойством foo
со значением "bar"
и присваивает объект переменной obj
.
Итак, ищите сновав приведенном выше блоке кода:
Мы создаем объект со свойствами settings
и page_id
.settings
инициализируется с пустым объектом;page_id
инициализируется значением переменной page_id
.
Затем мы перебираем ваши inputs
и добавляем свойства в settings
, используя имя каждого входа, устанавливаязначение свойства будет значением ввода.
Итак, давайте предположим, что у нас есть
<input name="oneField" value="bar">
<input name="anotherField" value="bang">
<input name="yetAnotherField" value="cool">
... и давайте предположим, что page_id
есть 3
.
В итоге мы получим эту структуру в объекте, на который ссылается переменная data
:
{
settings: {
oneField: "bar",
anotherField: "bang",
yetAnotherField: "cool"
},
page_id: page_id
}
* JSON является текстовая запись .Когда вы пишете такие вещи, как var data = { ... };
в коде, вы просто используете JavaScript.JSON является подмножеством буквального синтаксиса JavaScript, который разработан для удобного анализа, например, он удобен для хранения произвольных сложных данных в хранилищах данных или для извлечения данных с сервера.Вы извлекаете строку, которая содержит данные, а затем разбираете эту строку для построения структуры объекта в памяти.