如何在JavaScript的for循环中创建JSON对象

6
我想用JavaScript在for循环内创建一个JSON对象。我期望的结果应该是这样的:
{
   "array":[
      {
         "value1":"value",
         "value2":"value"
      },
      {
         "value1":"value",
         "value2":"value"
      }
   ]
}

有人能帮我用JavaScript实现这个结果吗?

2
只需使用普通的对象创建结构,最后使用 JSON.stringify 将其转换为 JSON。不要手动构建 JSON。 - Felix Kling
可能是重复的问题:如何安全地将 JSON 字符串转换为对象? - Celeo
3个回答

18

不要在 for 循环中创建 JSON,而是使用 for 循环创建一个普通的 JavaScript 对象,然后使用 JSON.stringify(myObject) 来创建 JSON。

var myObject = {};

for(...) {
   myObject.property = 'newValue';
   myObject.anotherProp = [];
   for(...) {
       myObject.anotherProp.push('somethingElse');
    }
}

var json = JSON.stringify(myObject);

嗨,谢谢,它运行良好。 - Gopi Nath
在TypeScript中等价的代码是什么?在TypeScript中,我得到了错误 error TS2339: Property 'someproperty' does not exist on type '{}'. - ontherocks

3
var loop = [];

for(var x = 0; x < 10; x++){
 loop.push({value1: "value_a_" + x , value2: "value_b_" + x});
}

JSON.stringify({array: loop});

1
这段代码可以生成你所需要的内容:

var result = {"array": []};


for(var i = 0; i < 2; i++){
    var valueDict = {};
    for(var j = 0; j < 2; j++){
        valueDict["value" + (j+1).toString()] = "value";
    }
    result["array"].push(valueDict);
}

它使用push函数向列表中添加项目,并使用indexer []符号符号修改对象原型上的条目。
希望能对您有所帮助,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接