Как получить значение объекта JSON, если его имя содержит точки?

108

У меня очень простой массив JSON (обратите внимание на объект "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

Но, к сожалению, ничего не отображает.
Когда я меняю "points.bean.pointsBase" на что-то без точек в имени - все работает!

Однако я не могу изменить это имя на другое без точек, но мне нужно получить значение ?!
Есть ли варианты его получить?

Ник Сумейко
источник

Ответы:

215

Вы хотите:

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

В JavaScript любое поле, к которому можно получить доступ, используя расширение. оператора, вы можете получить доступ с помощью [] со строковой версией имени поля.

Рассел Леггетт
источник
27

в javascript доступ к свойствам объекта можно получить с помощью. или с индексированием ассоциативного массива с помощью []. т.е. object.propertyэквивалентноobject["property"]

это должно сработать

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
z33m
источник
4

Если ключ / имя объекта json содержит точку ......! лайк

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

Чем вы можете получить доступ как

myJson["my.name"]
myJson["my.age"]
Викас с кумар
источник
-3

Чтобы использовать обновленное решение, попробуйте использовать утилиту lodash https://lodash.com/docs#get

Ашутош Ранджан
источник