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?
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.
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;
Essayez ["points.bean.pointsBase"]
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"]
Juste pour utiliser une solution mise à jour, essayez d’utiliser l’utilitaire lodash https://lodash.com/docs#get