Ответ 1
Что вы хотите:
var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
В JavaScript, любое поле, к которому вы можете получить доступ, используя. оператор, вы можете получить доступ с помощью [] с строковой версией имени поля.
У меня очень простой массив 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" на то, что без точек в названии - все работает!
Однако я не могу изменить это имя ни на что другое без точек, но мне нужно получить значение?!
Есть ли варианты его получения?
Что вы хотите:
var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
В JavaScript, любое поле, к которому вы можете получить доступ, используя. оператор, вы можете получить доступ с помощью [] с строковой версией имени поля.
в javascript, доступ к свойствам объекта. оператора или с ассоциативной индексацией массива с помощью []. то есть. object.property
эквивалентно object["property"]
это должно сделать трюк
var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
Попробуйте ["points.bean.pointsBase"]
Чтобы использовать обновленное решение, попробуйте использовать утилиту lodash https://lodash.com/docs#get