最近前端框架修改,小伙伴希望能像以前写jsp一样使用 对象.属性作为表单元素的name值
<form id="test-form">
<input name="a.b.c" value="abc">
<input name="a.b.d" value="abd">
<input name="x" value="x">
<input name="a.f" value="af">
<input name="y" value="0">
<input name="y" value="y2">
<input name="m[0].c" value="m0c">
<input name="m[0].d" value="m0d">
<input name="m[1].c" value="m1c">
<input name="m[1].d" value="m1d">
<input type="button" id="test-btn">
</form>
我这种懒人第一反应肯定去找度娘,发现度娘居然没有,只好自己造了轮子。
function form2Json(params){
var selector=params.form;
var values= $(selector).serializeArray();
var obj={};
for (var index = 0; index < values.length; ++index)
{
var temp=obj; //上一级
var n=values[index].name;
if(n.indexOf(".")>-1){
var arr=n.split(".");
for(var i=0;i<arr.length-1;i++){
if(arr[i].indexOf("[")>-1){
var a=arr[i].substring(0,arr[i].indexOf("["));
temp[a]=temp[a]||[];
var y=arr[i].substring(arr[i].indexOf("[")+1,arr[i].indexOf("]"));
temp[a][y]=temp[a][y]||{};
temp=temp[a][y];
}else{
temp[arr[i]]=temp[arr[i]] || {};
temp=temp[arr[i]];
}
}
temp[arr[arr.length-1]]=values[index].value;
}else{
if(obj[n] !==undefined && obj[n]!=null){
if( !$.isArray(obj[n])){
var v=obj[n];
obj[n]=[];
obj[n].push(v);
}
obj[n].push(values[index].value);
}else{
obj[n]=values[index].value;
}
}
}
return obj;
}
该轮子支持复杂对象,支持对象数组,支持简单属性
$("#test-btn").on("click",function(){
var json=form2Json({
form:"#test-form"
});
console.log(json);
console.log(JSON.stringify(json));
});
最终结果如下
{"a":{"b":{"c":"abc","d":"abd"},"f":"af"},"x":"x","y":["0","y2"],"m":[{"c":"m0c","d":"m0d"},{"c":"m1c","d":"m1d"}]}
分享到:
相关推荐
Asp.Net服务器端借用Newtonsoft.Json.dll进行直接把对象转换成成Json格式的字符串,或把Json字符串转换成类对象。该dll原本针对JavaScript进行的转换,对其中部分类作出了修改,并重新命名为AndroidConvert类。 注...
//复合类型bean转成成json @Test public void testBeadToJSON(){ MyBean bean = new MyBean(); bean.setId("001"); bean.setName("银行卡"); bean.setDate(new Date()); List cardNum = new ArrayList(); ...
介绍了如何将ads 下的文件 转换成keilmdk,并给出了一个基于LPC2294下的例程
传统的层次聚类算法通常以节点为对象进行扩展形成 层次树图从而得到网络的层次结构。这种做法存在两个问题,其一是算法的稳定性,主要体现在初始节点的选择 上,少数情况下,初始节点的不同会导致算法最终结果的不同...
在java中使用反射将map转换成成对应的对象,所使用的jar
ECMA 262 Edition5 中提供了原生的JSON支持,其中JSON.parse用来将字符串转成成json,见ECMA 262 Edition5 15.12.2。另见:字符串转换成json的三种方式
1.双击打开程序:pdf.exe 2.选择待转换PDF 3.选择完成后,选择输出位置,设置文件名,确认完成转换
多边形合并:使用 multiPolygon, polygon 方法进行合并,具体合并可以参考文章如下:https://zhuhukang.blog.csdn.net/article/details/133716577
Unity Json读取存储,是一个简单存储的事例。用法只需将LitJson.dll文件放入Unity Plugins文件夹中,想要进行读取存储只需更改代码。
基于分类-回归卷积神经网络...能源电力系统可靠性评估方法_邵成成.pdf
基于神经网络的歌声合成系统`内含数据集以及成成样本'环境搭建教程 * 快照中提供了预训练模型/ * 生成的样本位于 data/gen/ 中 * 尝试运行 inference.py
ova、ovf转qcow2等格式必备工具,支持vmware转换为华为云部署。ova、ovf转qcow2等格式必备工具,支持vmware转换为华为云部署。ova、ovf转qcow2等格式必备工具,支持vmware转换为华为云部署。ova、ovf转qcow2等格式...
16进制转换成10进制 16进制转换成10进制 16进制转换成10进制 16进制转换成10进制 16进制转换成10进制
初中语文文摘社会成成的理想世界
实验_41724260_胡成成_通信17011
《成成烽火》观后感.pdf
Android成成.apk应用程序(图解)
通过excel设计数据库直接通过宏转成成mysql表导入数据库
侯成成PWM可逆直流调速系统matlab仿真报告DOC.doc
摘要:在本报告中介绍了一套简易的图片编辑器软件系统的需求分析、设计、实现和测试。首先对于整个项目的基本模块,算法,框架,UI界面需求进行分析,根据需求引入相关技