How to get JSON objects value if its name contains dots?

How to get JSON objects value if its name contains dots?

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?

Solutions/Answers:

Solution 1:

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.

Solution 2:

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;

Solution 3:

Try ["points.bean.pointsBase"]

Solution 4:

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

Solution 5:

Just to make use of updated solution try using lodash utility
https://lodash.com/docs#get

Related:  Can I disable ECMAscript strict mode for specific functions?