Como obter o valor de objetos JSON se seu nome contiver pontos?

108

Eu tenho uma matriz JSON muito simples (concentre-se no 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

Mas, infelizmente, não exibe nada.
Quando eu mudo "points.bean.pointsBase" para smth sem pontos no nome - tudo funciona!

No entanto, não posso alterar esse nome para qualquer outro sem pontos, mas preciso obter um valor ?!
Existe alguma opção para obtê-lo?

Nik Sumeiko
fonte

Respostas:

215

O que você quer é:

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

Em JavaScript, qualquer campo que você pode acessar usando o. operador, você pode acessar usando [] com uma versão de string do nome do campo.

Russell Leggett
fonte
27

em javascript, as propriedades do objeto podem ser acessadas com. operador ou com indexação de matriz associativa usando []. ie. object.propertyé equivalente aobject["property"]

isso deve funcionar

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

Experimentar ["points.bean.pointsBase"]

TK.
fonte
4

Se a chave / nome do objeto json contiver um ponto ......! gostar

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

Do que você pode acessar como

myJson["my.name"]
myJson["my.age"]
Kumar de Vikas
fonte