2010-02-23 10 views
11

Ich habe versucht, eine dynamisch benannte JSON-Eigenschaft zu erstellen, aber ich treffe weiterhin auf Fehler. Ehrlich gesagt weiß ich nicht ob das mit Javascript möglich ist. Wie auch immer, hier ist mein Problem.Eine JSON-Eigenschaft dynamisch benennen

Nehmen wir an, ich wie dem folgenden Code ein JSON-Objekt bin erstellen:

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

nun dynamisch ist, um die JSON Eigenschaft zu nennen, weil mit so etwas wie 'New' + ClassName (ClassName ein zu tun, was ich habe versucht, zu sein var mit einem String-Wert), aber es gibt mir einen Syntaxfehler. Gibt es eine Möglichkeit, dies zu tun, um so etwas wie:

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

Ich schätze Ihre Hilfe wirklich. Vielen Dank.

Antwort

25

Würde dieser Anzug Ihre Bedürfnisse?

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

Danke für die Antwort. –

+0

Gern geschehen. –

+0

:) Es war so viel einfach ... Danke – Ahsan

9

Dies ist nur ein "Objekt". JSON ist eine Serialisierung zu einer Zeichenfolge, kein Objekttyp. Wenn Sie eine Variable als Eigenschaftsnamen verwenden möchten, müssen Sie zunächst ein Objekt erstellen und dann die Daten mit square bracket notation zuweisen.

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

Danke für die Antwort. –

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

Danke für die Antwort –

2

Mit ECMAScript 6 können Sie berechnete Eigenschaftsnamen in Objekteigenschaftsdefinitionen verwenden.

Zum Beispiel können Sie einfach schreiben:

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

Weitere Informationen: http://es6-features.org/#ComputedPropertyNames