2010-02-23 27 views
11

Dinamik olarak adlandırılmış bir JSON özelliği oluşturmaya çalışıyorum ancak hatalara devam ediyorum. Dürüst olmak gerekirse, bu Javascript ile elde etmek mümkün olup olmadığını bilmiyorum. Neyse, benim problemim. Bir varlık (Bir JSON özelliğini dinamik olarak adlandırın

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

Şimdi benim yapmaya çalıştığım dinamik çünkü 'New' + ClassName gibi bir şeyle JSON özelliğini isim olduğunu ClassName:

ı aşağıdaki kodu gibi bir JSON nesnesi yaratıyorum varsayalım string değeri ile var) ama bana bir sözdizimi hatası veriyor. Bunun gibi bir şey olması için bir yolu var mı:

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

Yardımlarınız için gerçekten minnettarım. Teşekkürler.

cevap

25

misiniz bu uygun ihtiyaç?

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

Cevabınız için teşekkürler. –

+0

Rica ederim. –

+0

:) Çok kolay oldu ... Teşekkürler – Ahsan

9

Bu yalnızca "nesne" dir. JSON, bir dize, bir nesne türüne değil bir serileştirme işlemidir.

Bir değişken bir özellik adı olarak kullanmak istiyorsanız, önce bir nesne oluşturmanız, ardından square bracket notation kullanarak verileri atamanız gerekir.

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

teşekkür ederiz. –

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

Cevap için teşekkürler –

2

ECMAScript 6 ile, nesne özellik tanımlarında hesaplanmış özellik adlarını kullanabilirsiniz.

Örneğin, sadece yazabilirsiniz:

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

Daha bilgi: cevap için http://es6-features.org/#ComputedPropertyNames

İlgili konular