如何在javascript中动态构建JSON?

如何在javascript中动态构建JSON?,javascript,Javascript,如何在javascript中动态构建这个JSON结构?谷歌告诉我使用一些push命令,但我只找到了一些具体的例子。那么,我应该写些什么来将数据输入到“listX”和“not_a_list”中呢。追加以及创建新列表。整个过程始于: var myJSON = { "list1" : [ "1", "2" ], "list2" : [ "a", "b" ], "list3" : [ { "key1" : "valu

如何在javascript中动态构建这个JSON结构?谷歌告诉我使用一些push命令,但我只找到了一些具体的例子。那么,我应该写些什么来将数据输入到“listX”和“not_a_list”中呢。追加以及创建新列表。整个过程始于:

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

由于
myJSON
是一个对象,您可以只设置其属性,例如:

var myJSON = {};
如果不知道属性的名称,则必须使用数组访问语法:

myJSON.list1 = ["1","2"];
如果要向其中一个属性添加元素,可以执行以下操作:

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

首先,我认为你称之为错误的事情。“JSON”代表“JavaScript对象表示法”——它只是一种规范,用于在字符串中表示一些数据,该字符串显式地模仿JavaScript对象(以及数组、字符串、数字和布尔值)文本。您正试图动态构建一个JavaScript对象,因此您要查找的单词是“object”

有了这种迂腐的作风,我想你是在问如何设置对象和数组属性

myJSON.list1.push("3");
该代码将构建您在问题中指定的对象(除了我将其称为myObject而不是myJSON)。关于访问属性的更多信息,我推荐和这本书。

你真的是指JSON(即字符串)还是嵌套JavaScript对象、数组、字符串和数字的集合(可以序列化为JSON)?关于“键是数字”(有点迂腐):不是这样,键总是对象中的字符串(包括数组)和
[0]
等。隐式转换为
[“0”]
等(例如,请参见)。
// 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';