¿Cómo obtener el valor de los objetos JSON si su nombre contiene puntos?

108

Tengo una matriz JSON muy simple (concéntrese en el objeto "points.bean.pointsBase" ):

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, desafortunadamente, no muestra nada.
Cuando cambio "points.bean.pointsBase" a algo sin puntos en su nombre, ¡todo funciona!

Sin embargo, no puedo cambiar este nombre por otro sin puntos, ¡¿pero necesito obtener un valor ?!
¿Hay opciones para conseguirlo?

Nik Sumeiko
fuente

Respuestas:

215

Lo que quieres es:

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

En JavaScript, cualquier campo al que pueda acceder mediante la extensión. operador, puede acceder usando [] con una versión de cadena del nombre del campo.

Russell Leggett
fuente
27

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

Esto debería funcionar

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

Tratar ["points.bean.pointsBase"]

TK.
fuente
4

Si la clave / nombre del objeto json contiene un punto ... me gusta

var myJson = {"my.name":"vikas","my.age":27}

De lo que puedes acceder como

myJson["my.name"]
myJson["my.age"]
Vikas s kumar
fuente