前端 对象属相封装到实体类中,传到后台

        在开发中往往会将我们的一些用到对象的属性需要传到后台,而且对象还是多个,为了提高开发效率,故写一个公共的方法来将多个前台对象的属性传到后台。比如我这里有对象var p={"a":"aaa","b":"bbb","c":"ccc","array":ary},可能还有数组对象 var ary = [{"属性a":"123","属性b":"456","属性c":"789"},{"属性a":"123","属性b":"456","属性c":"789"},{"属性a":"123","属性b":"456","属性c":"789"}];

/**
 * 组装请求jsonObj(把对应对象的所有属性组装到请求的sendObj中)
 * @param sendObj			请求sendObj
 * @param dtoObj			对应dto对象
 * @param dtoName			对应后台Action dto的属性名称
 */
function concatSendObjByObj(sendObj,dtoObj,dtoName)
{
	if (typeof dtoName == "undefined") {
		for(var pro in dtoObj){
			if(typeof(dtoObj[pro]) == "function"){
				continue;
			}
			sendObj[pro] = dtoObj[pro];
		}
	} else {
		for(var pro in dtoObj){
			if(typeof(dtoObj[pro]) == "function"){
				continue;
			}
			//判断此处对象是否为一个数组如果是的话我们调用下面组装数组的方法
			if(dtoObj[pro]) instanceof Array)
			{
				concatSendObjByArray(sendObj,dtoObj[pro],dtoName+"."+pro);
			}else
			{
				sendObj[dtoName+"."+pro] = dtoObj[pro];
			}
		}
	}
}

/**
 * 组装请求jsonObj(把对应循环域数组组装到请求的sendObj中)
 * @param sendObj					请求sendObj
 * @param objArray					对应循环域数组
 * @param dtoName					对应后台Action 循环域数组dto的属性名称
 */
function concatSendObjByArray(sendObj,objArray,dtoName)
{
	for(var i=0;i<objArray.length;i++)
	{
		var tempObj=objArray[i];
		for(var p in tempObj)
		{
			if(typeof(tempObj[p])=="function")
			{
				continue;
			}
			if(p != "0")
			{
				sendObj[dtoName+"["+i+"]."+p]=tempObj[p];
			}else
			{
				sendObj[dtoName+"["+i+"]"]=tempObj[p];
			}
		}
	}
}

调用该方法concatSendObjByObj(senObj,p,"dtoName");console.log(senObj);

  1. dtoName.a:"aaa"
  2. dtoName.array[0].属性a:"123"
  3. dtoName.array[0].属性b:"456"
  4. dtoName.array[0].属性c:"789"
  5. dtoName.array[1].属性a:"123"
  6. dtoName.array[1].属性b:"456"
  7. dtoName.array[1].属性c:"789"
  8. dtoName.array[2].属性a:"123"
  9. dtoName.array[2].属性b:"456"
  10. dtoName.array[2].属性c:"789"
  11. dtoName.b:"bbb"
  12. dtoName.c:"ccc"

后台在全局或者方法里定义对应的类(别名dtoName)接受即可。

猜你喜欢

转载自blog.csdn.net/qq_40826106/article/details/83068552