Подтвердить что ты не робот

Как я могу динамически строить JSON в javascript?

var myJSON = {  
              "list1" : [ "1", "2" ],
              "list2" : [ "a", "b" ],
              "list3" : [ { "key1" : "value1" }, { "key2" : "value2" } ],
              "not_a_list" : "11"
             };

Как мне динамически построить эту структуру JSON в javascript? Google предлагает мне использовать команду push, но я нашел конкретные случаи. Итак, что я пишу для ввода данных в "listX" и "not_a_list". Добавление, а также создание нового списка. Вся процедура, начинающаяся с:

var myJSON = {};
4b9b3361

Ответ 1

Во-первых, я думаю, вы называете это неправильным. "JSON" означает "Обозначение объектов JavaScript" - это просто спецификация для представления некоторых данных в строке, которая явно имитирует литералы JavaScript (и массивы, строки, числа и логические). Вы пытаетесь создать объект JavaScript динамически - поэтому слово, которое вы ищете, является "объектом".

С этой педантией, я думаю, что вы спрашиваете, как установить свойства объекта и массива.

// make an empty object
var myObject = {};

// set the "list1" property to an array of strings
myObject.list1 = ['1', '2'];

// you can also access properties by string
myObject['list2'] = [];
// accessing arrays is the same, but the keys are numbers
myObject.list2[0] = 'a';
myObject['list2'][1] = 'b';

myObject.list3 = [];
// instead of placing properties at specific indices, you
// can push them on to the end
myObject.list3.push({});
// or unshift them on to the beginning
myObject.list3.unshift({});
myObject.list3[0]['key1'] = 'value1';
myObject.list3[1]['key2'] = 'value2';

myObject.not_a_list = '11';

Этот код будет создавать объект, указанный вами в вашем вопросе (за исключением того, что я называю его myObject вместо myJSON). Для получения дополнительной информации о доступе к свойствам я рекомендую Руководство по JavaScript Mozilla и книгу JavaScript: хорошие части.

Ответ 2

Поскольку myJSON - объект, вы можете просто установить его свойства, например:

myJSON.list1 = ["1","2"];

Если вы не знаете имя свойства, вы должны использовать синтаксис доступа к массиву:

myJSON['list'+listnum] = ["1","2"];

Если вы хотите добавить элемент в одно из свойств, вы можете сделать:

myJSON.list1.push("3");