You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery/JavaScript中将数组转换为对象属性并解决API反序列化报错

问题排查及修复方案

核心错误原因

  • 错误将数组转换为对象:ContactList.Contacts = Object.assign({}, users)这行代码会把users数组转换为键为数字索引的普通对象,而后端期望接收的是IEnumerable<Contact>集合类型,JSON对象无法反序列化为集合,直接触发你遇到的报错。
  • 数组元素结构不匹配:你获取的users是纯ID字符串组成的数组,但是后端要求Contacts的每个元素都是包含ID、Name属性的Contact对象,直接传字符串数组即使改回数组类型也会反序列化失败。
  • 字段映射不匹配:前端定义的AcntNumber字段在后端ContactList类中不存在,后端对应字段是Account类型的Account属性,需要调整属性赋值逻辑。
  • 可选注意项:后端Contact类的ID属性是大写ID,如果后端没有配置忽略大小写的序列化规则,前端传小写id会导致ID绑定失败。

修正后的代码

// 初始对象定义
var ContactList = {
     Account: {}, // 对应后端Account属性
     Contacts: []
}

// 数据处理逻辑
var users = $('select#users').val() || []; // id为users的select多选时val()直接返回id数组,无需遍历
// 把id字符串数组映射为符合后端要求的Contact对象数组
ContactList.Contacts = users.map(userId => {
    return {
        ID: userId,
        Name: "" // 如果需要传名称可以自行补充取值逻辑
    }
});
// 给Account属性赋值,对应Accounts类的字段
ContactList.Account = {
    AcntNumber: $("#accNum").val()
};

// Ajax请求保持不变
$.ajax({
    type: "POST",
    headers: { "Authorization": `Bearer ${token}` },
    async: false,
    url: URL,
    data: JSON.stringify(ContactList),
    contentType: "application/json",
    dataType: "json",
    success: function (data) {
        console.log(data);
    }
});

内容的提问来源于stack exchange,提问作者user3589388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:15:03