方案一:对于值为undefined null 的对象属性不考虑该方案
JSON.parse(JSON.stringify(data).replace(/name/g, 'new_name')) //data为数组,name为修改前,new_name为修改后
解释:1)JSON.stringify()把json对象转成json字符串;
2)使用正则的replace()方法替换属性名;
3)JSON.parse()把json字符串又转成json对象。
修改多个属性:当要修改多个属性名时,多次调用replace方法,可以链式调用。如下面说明
JSON.parse(JSON.stringify(data).replace(/name1/g, 'new_name1').replace(/name2/g, 'new_name2').replace(/name3/g, 'new_name3')...)
案例:
JSON.parse(JSON.stringify(data).replace(/val/g, 'name')) ;
data为数组,val为修改前的名称,name为修改后的名称
1.替换data里面的对象tenantInfoRespVO名称替换成tenantInfoUpdateReqVO
2.替换语句:
代码可复制
let tenantInfoUpdateReqVO =
JSON.parse(JSON.stringify(this.form).replace(/tenantInfoRespVO/g, 'tenantInfoUpdateReqVO'));
3.换完之后:
4.可能遇到的问题
直接转换为字符串,对于值为undefined null 的对象属性不会一个copy 到新的对象 ,就报错了,
直接赋值会让vue 数据失去响应式
5.处理:
// 当我们给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,也许这个时候就需要用到
// 调用方法:this.$set( target, key, value )
// this.$set(需要改变的对象,"需要改变的对象属性","新值")
// target:要更改的数据源(可以是对象或者数组)
// key:要更改的具体数据
// value :重新赋的值
第二方案:可以参考js递归替换对象内部的对象名称或属性名称-(第二篇)