我需要生成一个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时所犯的错误。
答案 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);
}