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

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

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

Ответы [ 5 ]

180 голосов
/ 05 апреля 2010

То, что вы хотите:

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

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

24 голосов
/ 05 апреля 2010

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

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

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
16 голосов
/ 05 апреля 2010

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

1 голос
/ 05 марта 2019

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

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

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

myJson["my.name"]
myJson["my.age"]
0 голосов
/ 12 апреля 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...