Динамически называют свойство JSON

Я пытаюсь создать свойство JSON с динамическим именем, но я продолжаю сталкиваться с ошибками. Честно говоря, я не знаю, можно ли достичь этого с помощью Javascript. В любом случае, вот моя проблема.

Предположим, что я создаю объект JSON, например, следующий код:

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

Теперь то, что я пытался сделать, - это динамически назвать свойство JSON, потому что с чем-то вроде 'New' + ClassName (ClassName является var с строковым значением), но это дает мне синтаксическую ошибку. Есть ли способ сделать это, чтобы стать чем-то вроде:

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

Я очень ценю вашу помощь. Благодарю.

Ответ 1

Соответствует ли это вашим потребностям?

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

Ответ 2

Это просто "объект". JSON является сериализацией строки, а не типа объекта.

Если вы хотите использовать переменную как имя свойства, сначала необходимо создать объект, а затем присвоить данные с помощью квадратных скобок нотации.

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

Ответ 3

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

Ответ 4

С ECMAScript 6 вы можете использовать вычисленные имена свойств в определениях свойств объекта.

Например, вы можете просто написать:

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

Дополнительная информация: http://es6-features.org/#ComputedPropertyNames