2010-04-05 14 views
66

Tengo una muy simple matriz JSON (por favor centrarse en "points.bean.pointsBase" objeto):¿Cómo obtener el valor de los objetos JSON si su nombre contiene puntos?

var mydata = 
{"list": 
    [ 
    {"points.bean.pointsBase": 
     [ 
     {"time": 2000, "caption":"caption text", duration: 5000}, 
     {"time": 6000, "caption":"caption text", duration: 3000} 
     ] 
    } 
    ] 
}; 

// Usually we make smth like this to get the value: 
var smth = mydata.list[0].points.bean.pointsBase[0].time; 
alert(smth); // should display 2000 

Pero, por desgracia, no hace nada pantalla.
Cuando cambio "points.bean.pointsBase" a smth sin puntos en su nombre - ¡todo funciona!

Sin embargo, no puedo cambiar este nombre a cualquier otra cosa sin puntos, pero necesito obtener un valor?
¿Hay alguna opción para obtenerlo?

Respuesta

145

Lo que quiere decir:

var smth = mydata.list[0]["points.bean.pointsBase"][0].time; 

En JavaScript, cualquier campo se puede acceder mediante el. operador, puede acceder utilizando [] con una versión de cadena del nombre del campo.

10

Trate ["points.bean.pointsBase"]

19

en JavaScript, las propiedades del objeto se puede acceder con. operador o con indexación de matriz asociativa usando []. es decir. object.property es equivalente a object["property"]

esto debe hacer el truco

var smth = mydata.list[0]["points.bean.pointsBase"][0].time; 
1

Sólo para hacer uso de la solución actualizada trate de usar utilidad lodash https://lodash.com/docs#get

+0

manera de marcarlo en. ¿Qué tal citando un método real en vez de simplemente pegar un enlace a una biblioteca de uso común? – benmar

+0

@benmar lo hizo, _.get es el método –

Cuestiones relacionadas