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

如何使用jQuery将serializeArray转为含动态属性及嵌套数组的对象

如何将DOM序列化数据转换为包含嵌套结构的对象

你当前用serializeArray()转平面对象的方法没问题,但要处理嵌套数组(比如Persons: []这种结构),关键在于表单元素的name属性要遵循特定命名规则,再通过解析这些name来构建嵌套结构。

核心思路

把表单元素的name写成类似Persons[0].id、Persons[0].name的格式,通过拆分name的路径,逐步构建嵌套对象和数组。

实现代码

下面是能处理嵌套对象和数组的通用方法:

function serializeToNestedObject(formElements) {
  const result = {};
  const arrayData = formElements.serializeArray();

  arrayData.forEach(item => {
    const keys = item.name.replace(/\]/g, '').split('[');
    let current = result;

    for (let i = 0; i < keys.length; i++) {
      const key = keys[i];
      // 处理数组索引,比如Persons[0]中的0
      if (!isNaN(key)) {
        const parentKey = keys[i-1];
        if (!Array.isArray(current[parentKey])) {
          current[parentKey] = [];
        }
        // 数组对应位置无对象则初始化
        if (!current[parentKey][key]) {
          current[parentKey][key] = {};
        }
        current = current[parentKey][key];
      } else {
        // 处理最后一个键,直接赋值
        if (i === keys.length - 1) {
          current[key] = item.value;
        } else {
          // 非最后一个键,不存在则初始化对象
          if (!current[key]) {
            current[key] = {};
          }
          current = current[key];
        }
      }
    }
  });

  return result;
}

// 使用示例
const nestedObj = serializeToNestedObject(section.find('select, textarea, input'));

对应表单示例

要生成你给出的{id:1, name:"ABC", Persons:[]}结构,表单元素需这样写:

<input type="hidden" name="id" value="1">
<input type="text" name="name" value="ABC">
<!-- 嵌套数组的元素 -->
<input type="text" name="Persons[0].name" value="张三">
<input type="text" name="Persons[0].age" value="25">
<input type="text" name="Persons[1].name" value="李四">
<input type="text" name="Persons[1].age" value="30">

运行方法后会得到:

{
  id: "1",
  name: "ABC",
  Persons: [
    { name: "张三", age: "25" },
    { name: "李四", age: "30" }
  ]
}

补充说明

  • 所有表单元素的value默认是字符串类型,若需要数字等类型,可在赋值时额外转换。
  • 如果没有对应数组元素(比如未定义Persons[0]),结果里的Persons会是未定义状态,可在方法末尾手动初始化空数组,或按需调整逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:05:03