Динамическое имя свойства JSON - PullRequest
16 голосов
/ 23 февраля 2010

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

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

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

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

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

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

Ответы [ 4 ]

33 голосов
/ 23 февраля 2010

Подойдет ли это вам?

var DTO = {}; DTO['New' + ClassName] = GetFormData();
10 голосов
/ 23 февраля 2010

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

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

var foo = {};
var bar = 'baz';
foo[bar] = '123';
alert(foo.baz);
4 голосов
/ 21 июня 2017

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

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

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

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

3 голосов
/ 23 февраля 2010
var DTO = Object();
DTO['New' + ClassName] = GetFormData();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...