动态命名JSON属性

时间:2010-02-23 13:46:56

标签: javascript json

我一直在尝试创建一个动态命名的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() };  

我非常感谢你的帮助。谢谢。

4 个答案:

答案 0 :(得分:33)

这会满足您的需求吗?

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

答案 1 :(得分:9)

这只是“一个对象”。 JSON是字符串的序列化,而不是对象类型。

如果要将变量用作属性名称,则必须先创建对象,然后使用square bracket notation分配数据。

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

答案 2 :(得分:4)

使用ECMAScript 6,您可以在对象属性定义中使用计算属性名称。

例如,您可以简单地写:

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

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

答案 3 :(得分:3)

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