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?

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.


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;

19

Experimentar ["points.bean.pointsBase"]


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.