Доступ к полям Json со странными символами - PullRequest
4 голосов
/ 10 ноября 2009

у меня есть строка json, которую я конвертирую в объект с простым eval (string);

heres the sample of the json string:
var json = @'
"{ description" : { "#cdata-section" : "<some html here>" } }
';
var item = eval('('+json+')');

Я пытаюсь получить к нему доступ вот так

item.description.#cdata-section

моя проблема в том, что javascript не нравится # в имени поля .. есть ли способ получить к нему доступ?

Ответы [ 3 ]

11 голосов
/ 10 ноября 2009
item.description['#cdata-section']
5 голосов
/ 10 ноября 2009

Помните, что все объекты Javascript - это просто хеш-таблицы внизу, поэтому вы всегда можете получить доступ к элементам с помощью индексной записи.

Всякий раз, когда имя элемента вызывает проблему с точечной нотацией (например, с использованием имени элемента переменной или с странными символами и т. Д.), Просто используйте вместо него строку.

var cdata = item.description["#cdata-section"];
1 голос
/ 10 ноября 2009

В то время как официальная спецификация для JSON указывает просто на то, что символы должны предоставляться в качестве идентификатора поля, когда вы анализируете ваш JSON в объект Javascript, вы теперь попадаете под ограничения идентификатора Javascript.

В спецификации Javascript идентификатор может начинаться с буквы, подчеркивания или $. Последующие символы могут быть любыми буквами, цифрами, подчеркиванием или $.

Таким образом, в основном # допустимо в спецификации JSON, но не в Javascript.

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