views:

178

answers:

3

I have a very simple JSON array (please focus on "points.bean.pointsBase" object):

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 does display nothing.
When I change "points.bean.pointsBase" to smth without dots in it's 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?

+6  A: 

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
Yeah, it works! Thx a lot.
Nikita Sumeiko
If it works, then feel free to mark it accepted ;)
Russell Leggett
+2  A: 

Try ["points.bean.pointsBase"]

TK
+3  A: 

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
+1 :-) ________
Dead account