在使用elementui时经常需要将数据转换格式,用来回填数据和请求数据
如例子中,可动态增减的form表单,格式为[{name:'a',value:'1'},{name:'b',value:'2'}],发送接口请求时 需要转换为{a:1,b:2},想反在编辑数据时需要将数据回填 又需要反过来转换数据 ;
转换数据需要有JS数据类型基础,特别时对象和数组的基础知识
1.A对象转化为B对象
A:对象 {name:"username",value:"dsx"}
B对象 {username:dsx}
1 data:{ 2 headerForm: [{ 3 name: '', 4 value: '' 5 }], 6 parameterForm: [{ 7 name: '', 8 value: '' 9 }] 10 } 11 12 methods:{ 13 set_params_headers() { 14 // this.parameterForm 15 // {name:"username",value:"dsx"}---输入类型(this.parameterForm) 16 // {username:dsx} ------输出格式 17 var params = {}; 18 for (var num in this.parameterForm) { 19 var parameterObj = this.parameterForm[num] 20 params[parameterObj.name] = parameterObj.value 21 } 22 this.form.params = JSON.stringify(params) //json.dumps 将字典转换为json 23 console.log(params) 24 console.log(this.form.params) 25 26 // this.headerForm 27 var headers = {}; 28 for (var num in this.headerForm) { 29 var headerObj = this.headerForm[num] 30 headers[headerObj.name] = headers.value 31 } 32 this.form.headers = JSON.stringify(headers) //json.dumps 将对象转换为json 33 }, 34 }
1.B对象转化为A对象
B对象 {username:dsx}
A:对象 {name:"username",value:"dsx"}
1 reset_headers_params(row) { 2 // this.parameterForm 3 // {username:dsx,passwd:123}-----输入类型 4 // [{name:"username",value:"dsx"},{name:'passwd',value:'123'}] ---输出类型 5 if (row) { 6 var params_data = [] 7 var parameterObj = JSON.parse(row) //json-loads 将json转换为对象 8 for (var num in parameterObj) { 9 var params = {} 10 params['name'] = num 11 params['value'] = parameterObj[num] //组装成对象 12 params_data.push(params) //添加到数组 13 } 14 this.parameterForm = params_data //初始化到parameterForm 15 16 var headers_data = [] 17 var headersObj = JSON.parse(row) 18 for (var num in headersObj) { 19 var headers = {} 20 params['name'] = num 21 params['value'] = headersObj[num] 22 headers_data.push(headers) 23 } 24 this.headerForm = headers_data 25 } else { 26 this.form.params = undefined; 27 this.form.headers = undefined 28 } 29 },