Comment obtenir la valeur des objets JSON si son nom contient des points?

108

J'ai un tableau JSON très simple (veuillez vous concentrer sur l'objet "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

Mais, malheureusement, il n'affiche rien.
Quand je change "points.bean.pointsBase" en smth sans points dans son nom - tout fonctionne!

Cependant, je ne peux pas changer ce nom en autre chose sans points, mais j'ai besoin d'une valeur?!
Y a-t-il des options pour l'obtenir?

Nik Sumeiko
la source

Réponses:

215

Ce que tu veux c'est:

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

Dans JavaScript, tous les champs auxquels vous pouvez accéder à l'aide du. opérateur, vous pouvez accéder en utilisant [] avec une version chaîne du nom de champ.

Russell Leggett
la source
27

en javascript, les propriétés des objets sont accessibles avec. opérateur ou avec indexation de tableau associatif à l'aide de []. c'est à dire. object.propertyest équivalent àobject["property"]

Cela devrait faire l'affaire

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

Essayer ["points.bean.pointsBase"]

TK.
la source
4

Si la clé / le nom de l'objet json contient un point ......! comme

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

Que vous pouvez accéder comme

myJson["my.name"]
myJson["my.age"]
Kumar de Vikas
la source