HTML 表单序列化怎么将输入项转换为 JSON 对象

星涛同学_4266

星涛同学_4266

2026-10-01

408人浏览

原创

html表单序列化为json对象需遍历有效输入项,提取name与值并组装为js对象,再调用json.stringify()转换;需过滤禁用、无name、非数据型控件,分类处理各类输入值,支持嵌套结构解析。

html 表单序列化怎么将输入项转换为 json 对象

HTML 表单序列化为 JSON 对象,核心是遍历表单内所有有效的输入项(input、select、textarea等),提取 name 和对应值,再按结构组装成 JavaScript 对象,最后可选转为 JSON 字符串。

获取表单元素并遍历有效字段

使用 form.elements 或 form.querySelectorAll('input, select, textarea') 获取所有控件。注意过滤掉:
• disabled 或 name 为空的元素
• type="button"、"submit"、"reset" 等非数据型输入
• 未选中的复选框(checkbox)和单选框(radio)

正确处理不同类型的输入值

不同控件取值方式不同,需分类处理:

  • 文本类(text、email、number、textarea 等):直接取 element.value
  • 单选框(radio):只取当前被选中的那个(可用 form.querySelector('input[name="xxx"]:checked'))
  • 复选框(checkbox):若多个同名,应收集为数组;若仅一个,可设为布尔值或字符串(按需约定)
  • 下拉框(select):单选取 select.value;多选(multiple)取 Array.from(select.selectedOptions).map(opt => opt.value)

构建嵌套或数组结构(可选进阶)

若表单字段名含点号或方括号(如 user.name、tags[]、items[0].price),可解析 name 属性实现层级赋值:

html-deploy
html-deploy

使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。

下载
  • user.email → 转为 { user: { email: "a@b.com" } }
  • hobbies[] → 收集所有同名 checkbox 值为数组 ["reading", "coding"]
  • phones[0].number 和 phones[1].number → 合并为 phones: [{ number: "123" }, { number: "456" }]

这类逻辑需自定义解析函数,基础场景用平铺对象即可。

转换为 JSON 字符串

得到 JS 对象后,调用 JSON.stringify(obj) 即可。注意:
• 确保值是可序列化的(避免函数、undefined、Symbol、循环引用)
• 如需格式化输出,加参数 JSON.stringify(obj, null, 2)

示例代码片段:

function formToJSON(form) {
  const obj = {};
  const fields = form.querySelectorAll('input:not([type=button]):not([type=submit]):not([type=reset]), select, textarea');
  
  fields.forEach(field => {
    if (!field.name || field.disabled) return;
    
    const { name, type, value } = field;
    if (type === 'checkbox' || type === 'radio') {
      if (type === 'radio' && !field.checked) return;
      if (type === 'checkbox') {
        if (!obj[name]) obj[name] = [];
        if (field.checked) obj[name].push(value);
        return;
      }
      obj[name] = value;
      return;
    }
    obj[name] = value;
  });

  return obj;
}

// 使用
const form = document.querySelector('#myForm');
const data = formToJSON(form);
const jsonStr = JSON.stringify(data); // → {"username":"Alice","age":"28"}

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html5 html js json

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2223

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4743

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5870

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5338

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

763

5

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

5375

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3092

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2750

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

2779

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 10.7万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 18.6万人学习

前端开发(基础+实战项目合集)
前端开发(基础+实战项目合集)

共60课时 | 6.3万人学习