2010-02-23 30 views
11

He estado intentando crear una propiedad JSON llamada dinámicamente pero sigo accionando los errores. Honestamente, no sé si esto es posible de lograr con Javascript. De todos modos aquí está mi problema.Nombre dinámicamente una propiedad JSON

Supongamos que estoy creando un objeto JSON como el siguiente código:

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

Ahora lo que he estado tratando de hacer es nombrar dinámicamente la propiedad JSON porque con algo así como 'New' + ClassName (ClassName ser una var con un valor de cadena) pero me da un error de sintaxis. ¿Hay alguna manera de hacer esto para convertirse en algo así como:

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

Realmente aprecio su ayuda. Gracias.

Respuesta

25

¿Esto se adapten a sus necesidades?

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

Gracias por la respuesta. –

+0

De nada. –

+0

:) Fue mucho más fácil ... Gracias – Ahsan

9

Esto es solo "un objeto". JSON es una serialización para una cadena, no un tipo de objeto.

Si desea utilizar una variable como nombre de propiedad, primero debe crear un objeto y luego asignar los datos usando square bracket notation.

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

Gracias por la respuesta. –

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

Gracias por la respuesta –

2

Con ECMAScript 6, puede utilizar los nombres de las propiedades calculadas en las definiciones de propiedad del objeto.

Por ejemplo, basta con escribir:

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

Más información: http://es6-features.org/#ComputedPropertyNames

Cuestiones relacionadas