web-dev-qa-db-fra.com

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

J'ai un tableau JSON très simple (concentrez-vous sur "points.bean.pointsBase" objet):

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" pour écrire 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'obtenir une valeur?!
Y a-t-il des options pour l'obtenir?

87
Nik Sumeiko

Ce que tu veux c'est:

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

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

184
Russell Leggett

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

cela devrait faire l'affaire

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

Essayez ["points.bean.pointsBase"]

16
TK.

Si l'objet/la clé 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"]
1
Vikas s kumar

Juste pour utiliser une solution mise à jour, essayez d’utiliser l’utilitaire lodash https://lodash.com/docs#get

0
Ashutosh Ranjan