2010-02-23 16 views
11

Próbuję utworzyć dynamicznie nazwaną właściwość JSON, ale wciąż uderzam w błędy. Szczerze mówiąc nie wiem, czy można to osiągnąć za pomocą Javascript. W każdym razie tutaj jest mój problem.Dynamicznie nazwij właściwość JSON

Załóżmy tworzę obiekt JSON jak w poniższym kodzie:

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

Teraz to, co starałem się zrobić to dynamicznie nazwać właściwość JSON bo z czymś 'New' + ClassName (ClassName bycia var z wartością ciągu znaków), ale daje mi błąd składni. Czy istnieje sposób, aby to zrobić, aby uzyskać coś takiego:

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

Bardzo dziękuję za pomoc. Dzięki.

Odpowiedz

25

będzie to pasować do Twoich potrzeb?

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

Dzięki za odpowiedź. –

+0

Nie ma za co. –

+0

:) To było bardzo łatwe ... Dzięki – Ahsan

9

To tylko "obiekt". JSON to serializacja do łańcucha, a nie do typu obiektu.

Jeśli chcesz użyć zmiennej jako nazwy właściwości, musisz najpierw utworzyć obiekt, a następnie przypisać dane, używając square bracket notation.

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

Dzięki za odpowiedź. –

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

Dzięki za odpowiedź –

2

Za pomocą ECMAScript 6 można używać obliczonych nazw właściwości w definicjach właściwości obiektów.

Na przykład, można po prostu napisać:

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

Więcej informacji: http://es6-features.org/#ComputedPropertyNames

Powiązane problemy