Як отримати значення об'єктів 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" на smth без крапок у своєму імені - все працює!

Однак я не можу змінити це ім'я ні на що інше без крапок, але мені потрібно отримати значення ?!
Чи є варіанти, щоб його отримати?

Відповіді:


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;


4

Якщо ключ / ім'я об'єкта json містить крапку ......! подібно до

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

Чим ви можете отримати доступ, як

myJson["my.name"]
myJson["my.age"]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.