146

I have a very simple array (please focus on the object with "points.bean.pointsBase" as key):

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

But, unfortunately, it displays nothing. When I change "points.bean.pointsBase" to something without dots in its name - everything works.

However, I can't change this name to anything else without dots, but I need to get a value? Is there any options to get it?

VLAZ
  • 26,331
  • 9
  • 49
  • 67
Nik Sumeiko
  • 8,263
  • 8
  • 50
  • 53

4 Answers4

266

What you want is:

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

In JavaScript, any field you can access using the . operator, you can access using [] with a string version of the field name.

Russell Leggett
  • 8,795
  • 3
  • 31
  • 45
34

in javascript, object properties can be accessed with . operator or with associative array indexing using []. ie. object.property is equivalent to object["property"]

this should do the trick

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
z33m
  • 5,993
  • 1
  • 31
  • 42
26

Try ["points.bean.pointsBase"]

TK.
  • 27,073
  • 20
  • 64
  • 72
21

If json object key/name contains dot......! like

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

Than you can access like

myJson["my.name"]
myJson["my.age"]
Sangam Belose
  • 4,262
  • 8
  • 26
  • 48
Vikas s kumar
  • 287
  • 3
  • 3