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

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

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

Ответ 1

Что вы хотите:

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

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

Ответ 2

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

это должно сделать трюк

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

Ответ 3

Попробуйте ["points.bean.pointsBase"]

Ответ 4

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