【问题标题】:How do I build JSON dynamically in javascript?如何在 javascript 中动态构建 JSON?
【发布时间】:2011-05-17 20:57:29
【问题描述】:
var myJSON = {  
              "list1" : [ "1", "2" ],
              "list2" : [ "a", "b" ],
              "list3" : [ { "key1" : "value1" }, { "key2" : "value2" } ],
              "not_a_list" : "11"
             };

如何在 javascript 中动态构建这个 JSON 结构?谷歌告诉我使用一些推送命令,但我只找到了特定的案例。那么我要写什么来向“listX”和“not_a_list”输入数据。附加以及创建一个新列表。整个过程开始于:

var myJSON = {};

【问题讨论】:

  • 你真的是指 JSON(即字符串)还是嵌套 JavaScript 对象、数组、字符串和数字的集合(可以序列化为 JSON)?

标签: javascript


【解决方案1】:

首先,我认为你说错了。 “JSON”代表“JavaScript Object Notation”——它只是一种在字符串中表示某些数据的规范,它明确地模仿 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)。有关访问属性的更多信息,我推荐Mozilla JavaScript Guide 和书籍JavaScript: The Good Parts

【讨论】:

【解决方案2】:

myJSON 是一个对象,你可以设置它的属性,例如:

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

如果你不知道属性的名字,你必须使用数组访问语法:

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

如果你想给其中一个属性添加一个元素,你可以这样做;

myJSON.list1.push("3");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多