JSON to JavaScript объект #text свойство - PullRequest
1 голос
/ 29 июля 2011

В настоящее время я разрабатываю надстройку JavaScript, которая получает JSON от API. Пока все хорошо, я извлекаю JSON, а затем использую eval() для преобразования этого JSON в объект JavaScript. Здесь начинаются проблемы.

Мой JSON содержит свойство '# text'. Я оценил объект JavaScript и обнаружил, что у него также есть это свойство # text, но я не могу вызвать это свойство, поскольку переменные с хэш-тегами не принимаются.

Я знаю два возможных решения (используйте eval() для преобразования в массив или удаления hast-тега), но я бы предпочел вызвать свойство. Есть идеи? Спасибо.

Ответы [ 3 ]

9 голосов
/ 29 июля 2011

Вы можете ссылаться на свойства объекта в квадратных скобках:

var obj = {'#foo': 'bar'};
obj['#foo']; // 'bar'

Действительно, obj.#foo недопустимо (т. Е. Вызовет синтаксическую ошибку), но описанный выше метод подойдет.

Кроме того, не используйте eval, если нет необходимости.Несмотря на то, что это более медленное решение, оно менее безопасно, особенно если учесть, что обычно существует множество собственных методов JSON, и большинство библиотек JSON предоставляют функциональность только , если собственные методы не существуют.

3 голосов
/ 29 июля 2011

Не используйте eval, особенно для этого.Вы парсер json, у современных браузеров они уже есть.

var myObj = JSON.parse(returnFromServer);
console.log(myObj.firstProperty); // etc

Вот ссылка CDN для json2 http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js

1 голос
/ 29 июля 2011

Делайте вещи до eval, например, заменяя знак хеша чем-то другим.

...