JQuery Form表单转JSON(支持复杂数据版)

关于Form表单转封装JSON的网上又很多,但是目前没找到可以封装Object嵌套的,所以稍微修改了下

网上通常写法:

$.fn.toJSON = function()    
	    {    
	       var o = {};    
	       var a = this.serializeArray();    
	       $.each(a, function() {    
	           if (o[this.name]) {    
	               if (!o[this.name].push) {    
	                   o[this.name] = [o[this.name]];    
	               }    
	               o[this.name].push(this.value || '');    
	           } else {    
	               o[this.name] = this.value || '';    
	           }    
	       });    
	       return o;    
	    };


修改后的写法:


$.fn.toJSON = function()    
	    {    
	       var o = {};    
	       var a = this.serializeArray();    
	       $.each(a, function() {
	    	   var name = this.name;
	    	   var value = this.value;
	    	   var paths = this.name.split(".");
	    	   var len = paths.length;
	    	   var obj = o;
        	   $.each(paths,function(i,e){
        		   if(i == len-1){
        			   if (obj[e]) {    
        	               if (!obj[e].push) {    
        	            	   obj[e] = [obj[e]];    
        	               }    
        	               obj[e].push(value || '');    
        	           } else {    
        	        	   obj[e] = value || '';    
        	           }
        		   }else{
        			   if(!obj[e]){
        				   obj[e] = {};
        			   }
        		   }
        		   obj = o[e];
        	   });	            
	       });    
	       return o;    
	    };


下面是实例:


Form表单如下:

	<f:form id="form" commandName="manager" autocomplete="false">
		<div class="row">
			<f:input path="name" class="form-control" />
			<f:input path="zone.id" class="form-control" />
		</div>
	</f:form>


后台JAVA对象是

public class User{

private String name;

private Zone zone;

.//..get / set

}

public class Zone {

private Long id;

// ...get / set

}



修改前转换成JSON为:

{'name':'aaa','zone.id':1}

这种格式后台接收后zone是null


修改后JSON为:

{'name':'aaa','zone':{'id':1}}


这样后台接收就没有问题了,

有需要的可以借鉴


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值