动态构建Javascript数组(JSON格式)

时间:2015-11-11 14:48:38

标签: javascript json

我需要生成一个JSON数组。示例如下:

[
    {
        "DataCategoryGroupId": "22222222-2222-2222-2222-222222222222",
        "AnswerOptionIds": [
            "76e32546-0e26-4037-b253-823b21f6eefb",
            "10d02a3e-9f9f-49fd-8806-e0b180465b7d"
        ]
    },
    {
        "DataCategoryGroupId": "33333333-3333-3333-3333-333333333333",
        "AnswerOptionIds": [
            "ee795c1b-71d1-476a-84f7-0d8084e25617",
            "b611309e-ccfc-44c4-a0e1-60f0767d20ba",
            "7066eb9a-6d08-4f34-8348-b10523e8a568"
        ]
    }
]

我尝试按以下方式构建它:

var postParams = [];
            for (var i = 0; i < dataCategories.length; i++) {
                var postElement = {
                    DataCategoryGroupId: dataCategories[i].DataCategoryId,
                    AnswerOptionIds: dataCategories[i].AnswerOptionIds
                };
                postParams.push(postElement);
            }

作为dataCategories内部的示例,请考虑以下调试代码:

for (var i = 0; i < dataCategories.length; i++) {
                console.log("Data Category Id: " + dataCategories[i].DataCategoryId);
                console.log("Answer Option Ids: " + dataCategories[i].AnswerOptionIds);
            }

以下代码的输出是:

Data Category Id: 22222222-2222-2222-2222-222222222222
Answer Option Ids: bf835029-5e3b-40d5-8736-34fe5121c5f4,10d02a3e-9f9f-49fd-8806-e0b180465b7d
Data Category Id: 33333333-3333-3333-3333-333333333333
Answer Option Ids: ee795c1b-71d1-476a-84f7-0d8084e25617,b611309e-ccfc-44c4-a0e1-60f0767d20ba,0049e914-520d-4721-92d2-9b0a050d7381

因此,数据存在,但我用于构造JSON的方法不正确,因为模型未与控制器匹配。如果我使用上面提供的示例JSON的rest客户端,则模型匹配。

有人可以指出我在构建我的JSON时所犯的错误。

1 个答案:

答案 0 :(得分:0)

问题可能是您需要深层复制。现在,您正在复制对输入数组的引用。如果更改,您的帖子数据将会更改。

var postParams = [];

for (var i = 0; i < dataCategories.length; i++) {
    dataElement = dataCategories[i];

    var postElement = {
        DataCategoryGroupId: dataElement.DataCategoryId,
        AnswerOptionIds: []
    };

    for (var j = 0; j < dataElement.AnswerOptionIds.length; j++){
        postElement.AnswerOptionIds.push(dataElement.AnswerOptionIds[j];
    }
    postParams.push(postElement);
}
相关问题