如何在json中创建对象数组?

时间:2014-08-07 16:16:24

标签: javascript json

我有一个json对象,如图所示。

this.model = {
            "cellType": "RemoveCell",
            "maxWidth": "800px",
            "items": {
                "columns" : [
                    {"attribute": "existingStrings", "title": "Existing Strings"},
                ],
                "rows" : [
                    {"existingStrings": this.stringList},
                ]
            }
        },

this.stringList是一个字符串数组(大小不一)。如何在JSON对象中声明this.stringList,使其在下面以这种方式运行?

this.model = {
            "cellType": "RemoveCell",
            "maxWidth": "800px",
            "items": {
                "columns" : [
                    {"attribute": "existingStrings", "title": "Existing Strings"},
                ],
                "rows" : [
                    {"existingStrings": this.stringList[0]},
                    {"existingStrings": this.stringList[1]},
                    {"existingStrings": this.stringList[2]},
                                      ...
                                      ...
                    {"existingStrings": this.stringList[n]},
                ]
            }
        },

我想"行"包含一个对象数组(stringList中每个元素的一个对象)。感谢

2 个答案:

答案 0 :(得分:4)

使用函数构建对象列表

this.model = {
        "cellType": "RemoveCell",
        "maxWidth": "800px",
        "items": {
            "columns" : [
                {"attribute": "existingStrings", "title": "Existing Strings"},
            ],
            "rows" : 
                (function(){ 
                  var objList = []; 
                  for(var i = 0; i < this.stringList.length; i++)
                   objList.push({"existingStrings":this.stringList[i]});
                  return objList;
                })()
        }
    },

这通过使用IIFE(立即调用的函数表达式)作为&#34;行&#34;的值来工作。 (function(){})定义函数表达式。在表达式后面使用()时,将调用该函数。函数内部是一个for循环,它使用this.stringList构建一个对象数组。循环结束后,返回数组,这是分配给&#34; rows&#34;的值。

答案 1 :(得分:2)

var rows = [];

for ( var i=0; i<this.stringList.length; i++){
    rows.push({"existingStrings":this.stringList[i]});
}

this.model = {
        "cellType": "RemoveCell",
        "maxWidth": "800px",
        "items": {
            "columns" : [
                {"attribute": "existingStrings", "title": "Existing Strings"},
            ],
            "rows" : rows
        }
    },