2010-02-23 5 views
11

J'ai essayé de créer une propriété JSON dynamiquement nommée, mais je continue de rechercher des erreurs. Honnêtement, je ne sais pas si c'est possible avec Javascript. Quoi qu'il en soit, voici mon problème.Nommez dynamiquement une propriété JSON

Supposons que je crée un objet JSON comme le code suivant:

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

Maintenant ce que j'ai essayé de faire est de nommer dynamiquement la propriété JSON car avec quelque chose comme 'New' + ClassName (ClassName étant var avec une valeur de chaîne) mais cela me donne une erreur de syntaxe. Y at-il un moyen de le faire pour devenir quelque chose comme:

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

J'apprécie vraiment votre aide. Merci.

Répondre

25

Serait-ce à vos besoins?

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

Merci pour la réponse. –

+0

De rien. –

+0

:) C'était tellement facile ... Merci – Ahsan

9

Ceci est juste "un objet". JSON est une sérialisation d'une chaîne, pas un type d'objet.

Si vous souhaitez utiliser une variable comme nom de propriété, vous devez d'abord créer un objet, puis affecter les données à l'aide de square bracket notation.

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

Merci pour la réponse. –

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

Merci pour la réponse –

2

Avec ECMAScript 6, vous pouvez utiliser des noms de propriété calculés dans les définitions de propriété d'objet.

Par exemple, vous pouvez simplement écrire:

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

Plus d'informations: http://es6-features.org/#ComputedPropertyNames

Questions connexes