如何映射对象数组的名称以更改字段名称
How can I map the names of an array of objects to change the field names?
我正在将数据从我的客户端发送到我的 WebApi 控制器上接受 ResponseFromClient 类的方法。由于它是WebApi,因此可以处理来自JSON的所有转换,并更改任何字段名称以匹配javascript和C#之间的大小写约定差异:
public class ResponseFromClient
{
public int QuestionId { get; set; }
public ICollection<AnswerDetail> Answers { get; set; }
public string Task { get; set; }
}
public class AnswerDetail
{
public int AnswerId { get; set; }
public string Text { get; set; }
public bool? Correct { get; set; }
public bool? Response { get; set; }
}
在Javascript中,我有一个名为ans
的数组,每个元素看起来像这样:
qs.ans[index].id = element.answerId;
qs.ans[index].c = null;
qs.ans[index].r = false;
qs.ans[index].text = element.text;
我需要将 Javascript 对象responseFromClient
的内容发送到 C# 服务器程序:
var responseFromClient = {
questionId: qs.q,
answers: qs.ans,
task: task
};
$http({
method: 'POST',
url: url,
data: responseFromClient
})
有没有一种简单的方法可以在 javascript 变量responseFromClient
中设置 answers
字段,以便它接收一个包含映射到 AnswerDetail
类的对象的数组。换句话说,我需要更改它,以便获得答案和如下所示的对象数组:
old > new
id > AnswerID
c > Correct
t > Text
r > Response
我想像我重新映射qs.q>questionId一样这样做。但是ans是一个数组,所以我不确定如何做到这一点。
在
JavaScript 中将对象映射到类上不是更容易
吗?qs.ans[index].answerId = element.answerId;
qs.ans[index].correct = null;
qs.ans[index].response = false;
qs.ans[index].text
或
在 AJAX 调用中
data: { "answerswerId" : responseFromClient.id,
"correct": responseFromClient.c,
"response": responseFromClient.t,
"text": responseFromClient.text }
您可以简单地使用旧的 => 新键数组重新映射所需的值。有更高级的方法可以做到这一点,但我不知道你案件的所有细节......
function remap(obj, old_keys, new_keys){
var len = old_keys.length;
var new_obj = {};
for (var i = 0; i < len; i++) {
new_obj[new_keys[i]] = obj[old_keys[i]];
}
return new_obj;
}
var len = ans.length;
var old_keys = ["id", "c", "r", "text"];
var new_keys = ["AnswerId", "Correct", "Response", "Text"]
for (var i = 0; i < len; i++) {
ans[i] = remap(ans[i], old_keys, new_keys);
}
相关文章:
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- JavaScript-使用空字段反转数组,并将其添加到旧数组中
- jQuery验证字段名包含方括号的组
- MongoDB - 查找元素,其中字段等于数组中的至少一个值
- 如何确保多值字段是数组
- 将多个数组合并为一个带有字段的数组
- AngularJS ngOptions按布尔字段筛选数组
- 如何通过objx的collect()方法创建json字符串特定字段的数组
- 显示胡子数组的字段名
- 当条件和字段名相同时,如何不允许在items数组中出现重复项?
- js serialize()可以处理数组字段名吗?
- 通过id字段过滤数组列表到一个新变量
- 从输入字段到数组的值- Javascript, localstorage
- 使用PHP从动态输入字段捕获数组值并通过电子邮件发送
- 如何从字段数组中获取字段名
- 使用 lodash 或 underscorejs 查找字段的数组计数
- 如何在 Javascript 中按字段删除数组中的重复对象
- 如果输入字段在数组中找到值,请执行此操作(jQuery/Javascript)
- JavaScript & lt; form>输入字段"associative"数组中
- Mongodb从每个文档检索一个字段到数组