Javascript: доступ к свойству объекта, имя которого начинается с числа
Я создаю Javascript / приложение jQuery .
Мне нужно обработать ответ JSON , который представляет собой HashMap
, например:
{
"accounts": {
"MediaFire": {
"provider": "MediaFire",
"usedStorage": "779680",
"totalStorage": "53687091200"
},
"4Sync": {
"provider": "4Sync",
"usedStorage": "620692",
"totalStorage": "16106127360"
}
}
}
Я использую функцию вставки (которую я не могу контролировать), которая возвращает анализируемый ответ JSON в объекте result
.
Когда я пытаюсь получить доступ к 4Sync
Вот так:
var usedStorage = result.accounts.4Sync.usedStorage; //doesn't work
Это не работает, я думаю это из-за 4 в начале ... Та же операция с другим объект работает нормально:
var usedStorage = result.accounts.MediaFire.usedStorage; //works
Я знаю, что объект result
содержит объект 4Sync
, но я не могу получить к нему доступ. Вот скриншот консоли Chrome:
Есть ли обходной путь для решения этой проблемы?
1 ответ:
Используйте квадратные скобки:
Идентификаторы свойств могут начинаться с числа, но выражения-члены с символомvar usedStorage = result.accounts["4Sync"].usedStorage;
.
допускают только допустимые идентификаторы переменных (поскольку все остальное неоднозначно). Чтобы обойти это, вы можете использовать синтаксис квадратных скобок, который эквивалентен, но позволяет использовать любую строку.Если вам интересно, вот грамматика :
Обратите внимание, что квадратные скобки могут содержать любое выражение, но заMemberExpression :
первичное выражение
выражение функции
MemberExpression[
Выражение]
MemberExpression.
IdentifierName.
может следовать только IdentifierName (в основном, любой действительный идентификатор плюс зарезервированные слова в ES5).