动态命名JSON属性

njthzxwz  于 2023-05-19  发布在  其他
关注(0)|答案(5)|浏览(173)

我一直在尝试创建一个动态命名的JSON属性,但我不断遇到错误。说实话,我不知道这是否可以用JavaScript实现。不管怎样,这是我的问题。
让我们假设我正在创建一个JSON对象,如下代码所示:

var DTO = { 'NewObject' : GetFormData() };  
var DTO = { 'UpdateObject' : GetFormData() };  
var DTO = { 'DelObject' : GetFormData() };

现在我一直在尝试动态命名JSON属性,因为使用类似'New' + ClassNameClassName是一个带有字符串值的var)的东西,但它给了我一个语法错误。有没有办法做到这一点,成为这样的:

var DTO = { 'New' + ClassName : GetFormData() };  
var DTO = { 'Update' + ClassName : GetFormData() };  
var DTO = { 'Delete' + ClassName : GetFormData() };

我真的很感激你的帮助。谢谢

roejwanj

roejwanj1#

这个适合你的需要吗?

var DTO = {}; DTO['New' + ClassName] = GetFormData();
vsnjm48y

vsnjm48y2#

使用ECMAScript 6,可以在对象属性定义中使用计算属性名称。
例如,你可以简单地写:

var DTO = { ['New' + ClassName] : GetFormData() };

更多信息:http://es6-features.org/#ComputedPropertyNames

mnemlml8

mnemlml83#

这只是一个“对象”。JSON是字符串的序列化,而不是对象类型。
如果要使用变量作为属性名,则必须首先创建一个对象,然后使用square bracket notation分配数据。

var foo = {};
var bar = 'baz';
foo[bar] = '123';
alert(foo.baz);
czq61nw1

czq61nw14#

var DTO = Object();
DTO['New' + ClassName] = GetFormData();
nhhxz33t

nhhxz33t5#

如果有人也需要保留以前的数据,那么使用下面的代码:

var DTO = {}; 
DTO = {...DTO,['New' + ClassName] = GetFormData()}
DTO = {...DTO,['Update' + ClassName] = GetFormData()}

最终DTO将存储“新建”和“更新”字段。

相关问题