¿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?

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.


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;


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"]

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.