form表单序列化JSON

form表单序列化详解(推荐) form的序列化,即将表单中的键值序列化为可提交的字符串 表单 <form id=target> <select name=age> <option value=age1>20</option> <option value=age2>21</option> </select> <input name=name value=Cynthia> <label>passsword</label> <input type=password name=password value=123456> <input 立即下载

1. 简单属性的表单域,序列化后只有一层JSON对象

/**
  * 功能:序列化form表单数据成Json对象
  * 1.name均是简单的一级对象
  * 2.同名的name属性,值会被序列化为数组,例如checkbox等控件
  */
$.fn.serializeObject = function() {
    var json = {};
    var arrObj = this.serializeArray();
    $.each(arrObj, function() {
      if (json[this.name]) {
           if (!json[this.name].push) {
            json[this.name] = [ json[this.name] ];
           }
           json[this.name].push(this.value || '');
      } else {
           json[this.name] = this.value || '';
      }
    });
    return json;
};

2. 有嵌套属性的表单域,序列化成有嵌套结构的JSON对象

 /** 
 * 功能:序列化form表单元素
 * 1.同名的name属性,值会被序列化为数组,例如checkbox等控件
 * 2.可以嵌套对象,name和value会被序列化为嵌套的json对象格式
 * 3.可以嵌套对象列表,name和value会被序列化成嵌套的json数组对象
 */
 $.fn.serializeNestedObject = function() {
     var json = {};  
     var arrObj = this.serializeArray();
     //alert(JSON.stringify(arrObj));
     $.each(arrObj, function() {
          // 对重复的name属性,会将对应的众多值存储成json数组
          if (json[this.name]) {  
               if (!json[this.name].push) {
                json[this.name] = [ json[this.name] ];
               }
               json[this.name].push(this.value || '');
          } else {
               // 有嵌套的属性,用'.'分隔的
               if (this.name.indexOf('.') > -1) {
                    var pos = this.name.indexOf('.');
                    var key =  this.name.substring(0, pos);
                    // 判断此key是否已存在json数据中,不存在则新建一个对象出来
                    if(!existKeyInJSON(key, json)){
                     json[key] = {};
                    }
                    var subKey = this.name.substring(pos + 1);
                    json[key][subKey] = this.value || '';
               }
               // 普通属性
               else{
                    json[this.name] = this.value || '';
               }

          }
     });

     // 处理那些值应该属于数组的元素,即带'[number]'的key-value对
     var resultJson = {};
     for(var key in json){
          // 数组元素
          if(key.indexOf('[') > -1){
               var pos = key.indexOf('[');
               var realKey =  key.substring(0, pos);
               // 判断此key是否已存在json数据中,不存在则新建一个数组出来
               if(!existKeyInJSON(realKey, resultJson)){
                resultJson[realKey] = [];
               }
               resultJson[realKey].push(json[key]);

          }
          else{ // 单元素
               resultJson[key] = json[key];
          }
     }
     return resultJson;
 };
/**
 * 功能:判断key在Json结构中是否存在
 * 存在,返回true; 否则,返回false.
 */
 function existKeyInJSON(key, json){
      if(key == null || key == '' || $.isEmptyObject(json)){
           return false;
      }
      var exist = false;
      for(var k in json){
        if(key === k){
            exist = true;
        }
      }
      return exist;
 }

【说明】上面serializeNestedObject()方法调用了一个existKeyInJSON()方法,对简单的name属性,多个相同的name的值会序列化为数组,而复杂的name属性后面会覆盖前面的即只会有单一值。
调用方式:(引入jquery库文件)

var formJson = $("#fm1").serializeObject();
$("#outDiv0").append(JSON.stringify(formJson));

var formObj = $("#fm1").serializeNestedObject();
$("#outDiv").append(JSON.stringify(formObj));

示例HTML代码:

<form id="fm1">
 <table>
 <tr><td><label>学校名称:</label> </td><td><input type="text" name="collegeName" value="软件学院"/></td></tr>
 <tr><td><label>校址:</label> </td><td><input type="text" name="location" value="滇池海梗大坝"/></td></tr>

 <!--属性中嵌套对象形式 -->
 <tr><td><label>博士编号:</label> </td><td><input type="text" name="doctor.dCode" value="DT_X0135"/></td></tr>
 <tr><td><label>教龄:</label> </td><td><input type="text" name="doctor.dAge" value="10"/></td></tr>

 <!--属性中嵌套对象形式 -->
 <tr><td><label>讲师编号:</label> </td><td><input type="text" name="teacher.name" value="TH001"/></td></tr>
 <tr><td><label>工龄:</label> </td><td><input type="text" name="teacher.workAge" value="15"/></td></tr>

 <!--属性中嵌套数组等容器形式 -->
 <tr><td><label>专业代号一:</label> </td><td><input type="text" name="profession[0].code" value="PH_SOFTWARE"/></td></tr> 
 <tr><td><label>专业名称一:</label> </td><td><input type="text" name="profession[0].content" value="软件工程"/></td></tr>
 <tr><td><label>课程一:</label> </td><td><input type="text" name="profession[0].course" value="C语言,Java编程,Linux服务编程"/></td></tr>

 <tr><td><label>专业代号二:</label> </td><td><input type="text" name="profession[1].code" value="PH_COMPUTER"/></td></tr>
 <tr><td><label>专业名称二:</label> </td><td><input type="text" name="profession[1].content" value="计算机"/></td></tr>
 <tr><td><label>课程二:</label> </td><td><input type="text" name="profession[1].course" value="汇编语言,数据结构算法,phython编程"/></td></tr>

 <tr><td><label>专业代号三:</label> </td><td><input type="text" name="profession[2].code" value="PH_TELINFORMATION"/></td></tr>
 <tr><td><label>专业名称三:</label> </td><td><input type="text" name="profession[2].content" value="电子信息"/></td></tr>
 <tr><td><label>课程三:</label> </td><td><input type="text" name="profession[2].course" value="通信原理,网络通讯"/></td></tr>

 <!-- 序列化时,同name的value会组装成数组,对应一个name -->
 <tr><td><label>学位A:</label> </td><td><input type="checkbox" checked name="degree" value="学士"/></td></tr>
 <tr><td><label>学位B:</label> </td><td><input type="checkbox" checked name="degree" value="硕士"/></td></tr>

 <!-- 会覆盖掉上面 与同name的值 -->
 <tr><td><label>课程三(覆盖属性):</label> </td><td><input type="text" name="profession[2].course" value="通信原理2,网络通讯2"/></td></tr>
 </table>

 <div style="border: 2px solid brown; height: auto;">
   <span>简单json序列化:</span><p  id="outDiv0"></p>
   <hr/>
  <span>有嵌套属性json序列化:</span><p  id="outDiv"></p>
 </div>
 </form>

后台对应的JAVA VO对象

public class College {

 // 简单属性
 private String collegeName;
 private String location;

 // 嵌套对象属性
 private Doctor doctor;
 private Teacher teacher;

 // 对象列表属性
 private List<Profession> profession;
 // 基本类型列表属性
 private List<String> degree;


 // …… get/set方法

}

//嵌套对象
class Doctor{
 private String dCode;
 private String dAge;

 // …… get/set方法
}
//嵌套对象
class Teacher{
 private String name;
 private String workAge;

 // …… get/set方法
}
//嵌套对象
class Profession{
 private String code;
 private String content;
 private String course;

 // …… get/set方法
}
用workbuddy自定义Skill:手把手搭建AI炒股分析助手 AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示 阅读详情

相关推荐

淘特App x-sign参数逆向实战:从抓包到算法定位

本文详细解析了淘特App的x-sign参数逆向过程,从抓包分析到算法定位,涵盖了使用jadx-gui进行静态分析、Frida动态Hook验证以及Native层算法还原等关键技术。文章重点介绍了x-sign参数的生成机制及其在阿里系应用中的安全防护策略,为逆向工程师提供了实用的调试技巧和对抗策略。

5b6n7m8的博客 226

Form表单序列化成JSON

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33725239的博客 387

使用 ArxivLoader 从 arXiv 加载学术文献并实现高效文档处理

arXiv是一个开放获取的学术存储平台,涵盖了物理、数学、计算机科学等多个领域的 200 万篇学术论文。这些文献中包含了如逻辑推理、机器学习等热门领域的最新研究进展。通过使用 ArxivLoader,我们可以轻松地搜索和加载 arXiv 上的学术文献,并将其转换为文本以供分析或应用于下游任务,例如问答系统、摘要生成或知识图谱构建。有时我们并不需要完整的文献内容,而是只需要摘要用于快速预览。可以使用 get_summaries_as_docs()# 获取文献摘要# 查看第一篇摘要。

hgSdaegva的博客 888

form表单序列化为json

开发过程中,可能会涉及到表单提交,如果直接提交,那整个页面会刷新,并且也无法获取对应的提示信息。所以表单提交通常用ajax来实现,如果整个表单的字段很多,一个个的拼接很麻烦,这里介绍一个工具 common.js代码 //form序列化为json $.fn.serializeObject = function() { var o = {}; var a = this.seria...

程序猿学社的博客 5217

5G边缘计算:核心网下沉革命

5G核心网与边缘计算的深度融合,通过UPF下沉、本地流量卸载等关键技术,实现了低时延、高效能的分布式计算架构。该技术将数据处理从核心网向边缘节点转移,支持工业控制、车联网、远程医疗等场景的1-10ms超低时延需求。5G核心网的SBA架构和CUPS设计为边缘计算提供了灵活部署基础,SMF、PCF等网元协同确保业务质量与可靠性。

Qinti_mm的博客 1398

AD(AltiumDesigner)封装导入allegro生成allegro封装

AD(AltiumDesigner)封装导入allegro生成allegro封装 貌似PCB的封装问题是一个无尽话题,为了简单我总是想找捷径(主要还是太懒了),因为也是近期才开始学习使用allegro进行PCB设计,在最近的一个设计中,很多器件封装allegro中都没有,一个一个画感觉很费时间,但是在AD(AltiumDesigner)的封装库中是有的,于是便想着AD的封装库能不能倒入到alleg...

yangh2560的博客 2万+

form表单数据序列化为json

世上没有最聪明的人,只有最懒的人,分享一个表单数据序列化为json数据,通过ajax提交数据就不用一个一个的去获取值了,用下面的方法一键取值,懒人必备利器 $.fn.serializeObject = function () {     var o = {};     var a = this.serializeArray();     $.each(a, function () {     ...

weixin_38066357的博客 1489

Windows 11下JDK 21与JMeter 5.6.3环境配置全攻略

环境变量是操作系统管理软件路径与执行权限的核心机制,它通过预设的键值对,指引系统在调用命令时定位可执行文件。理解其工作原理,是解决软件安装后“命令未找到”等问题的关键。对于Java生态而言,正确配置JAVA_HOME和Path变量,不仅能让java、javac等基础命令全局可用,更是Maven、Gradle乃至JMeter等众多工具链顺畅运行的基石。JMeter作为一款基于Java开发的经典性能测试与接口测试工具,其稳定运行高度依赖健全的Java环境。本文聚焦于在Windows 11系统上,为JDK 21与

weixin_30940783的博客 449

form 表单 转换为json-多种(通用/多维数组) 全方案

JSON 在 JavaScript 中重要,因其轻量、通用、易读,适用于数据交换、存储和传输。为什么写这个文章,废话不多,直接近主题。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 2430

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8623

用Python turtle库 绘制皮卡丘

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 turtle基础知识参考: https://gitchat.blog.youkuaiyun.com/article/details/90696190 https://blog.csdn.ne...

qq_36295856的博客 2万+

form表单序列化转换为json对象

form表单序列化转换为json对象 //form表单序列化转换为json对象 (function($){ $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); $(array).each(function(){ if(serializeObj[this.name]){ if($.i

Uluoyu的博客 793

YOLOv8的特征蒸馏代码应用讲解(CWD/MGD/mimic/在线蒸馏/逻辑蒸馏)

基于YOLOv8的逻辑蒸馏、特征蒸馏、在线蒸馏等方法代码介绍。

qq_41920323的博客 2582

html form 序列化,基于jQuery.form.js将表单序列化为json对象

jQuery.form.js表单插件,可以让您轻松地在HTML表单中使用AJAX。主要的方法,ajaxForm和ajaxSubmit从表单元素,收集信息,以决定如何管理提交过程。更多方法:formToArray,formSerialize,fieldSerialize,fieldValue,clearForm,clearFields,resetForm等1.serialize()方法格式:var ...

weixin_39815879的博客 358

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jQuery序列化form表单json格式

JQuery序列化form表单json格式

不积跬步无以至千里 1117

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jquery序列化form表单使用ajax提交后处理返回的json数据

这篇文章主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下 1、返回json字符串: ** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try { servlet...

weixin_30896825的博客 280

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Jquery将form表单序列化成JSON对象

废话不多说,直接上代码 <form class="form-horizontal" id="userEditForm" role="form" > <div class="form-group"> <label class="col-sm-2 contr...

qq_39343308的博客 532

jQuery serializeObject 序列化form表单Json对象 jQuery.extend()合并对象

1、jQuery serializeObject 序列化form表单Json对象 /** * 将form序列化Json对象 * 将["key1=value1&key2=value2"]序列化成Json对象["key1":"value1","key2":"value2"]) * @example * * var formParams = $("#formId").serialize

Elon Space 1万+

form表单序列化转换JSON

$.fn.serializeForJSON = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { .

Mr_ZhangAdd的博客 755

form表单以json序列化方式提交

利用jquery提供的serializeArray方法,无需关心表单内容,只要有name属性,就会直接匹配value值,生成一个json对象。 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content=...

m0_37501154的博客 1505

序列化表单数据 html,jQuery序列化form表单数据为JSON对象的实现方法

jQuery序列化form表单数据为JSON对象的实现方法发布时间:2020-09-24 21:55:06来源:脚本之家阅读:228作者:haishujquery提供的serialize方法能够实现。$("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。serialize确实是能够解决一般的...

weixin_33835122的博客 288

form 转json,将form表单中的数据序列化数组后转换为Json

页面中引用了jquery,第一想到的就是序列化,但是序列化后的表单字段为a=1&b=2这种。 这里写一个jquery的扩展方法 $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function()...

weixin_30569033的博客 262

javascript jquery将表单form序列化成json提交

终于解决将form表单序列化为json提交的问题,本来很简单,只怪自己当初没看懂~

John_laishaobin的博客 2398

form表单序列化结果成为json格式的

$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[th...

qq_24434061的博客 1757

jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

1、返回json字符串:/** 将一个字符串输出到浏览器 */protected void writeJson(String json) {PrintWriter pw = null;try {servletResponse.setContentType("text/plain;charset=UTF-8");pw = servletResponse.getWriter();pw.write(js...

weixin_34313315的博客 1299
上一篇: JSON对象遍历
下一篇: SpringMVC配置字符串绑定日期对象
Carlos Chan
博客等级 码龄14年 6粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值