2009-09-28 2 views
0

В моем JavaScript я хочу получить доступ к свойствам сериализованного объекта JSON, который был создан через веб-службу .NET. Как десериализовать данные JSON в объект, который я могу манипулировать в JavaScript?Как преобразовать сериализованный объект JSON в объект JS, чтобы я мог получить доступ к его свойствам?

+0

Возможный дубликат [Сериализация в JSON в jQuery] (http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery) – outis

ответ

4

Использование json2.js из http://json.org - это обеспечивает JSON объект на глобальный объект, который обеспечивает parse функцию. Он имеет дополнительное преимущество в качестве основы для спецификации ES3.1 для JSON и, если возможно, будет использовать встроенную реализацию JSON. Это означает, что вы можете разобрать JSON сериализованную объект:

object = JSON.parse(string) 

Из-за способа его реализации это означает, что если вы просмотре страницы в браузере, который поддерживает JSON (например, Safari 4, Firefox 3.5, даже IE8.) вы получите быстрый и безопасный парсер автоматически.

0

Вы можете использовать JQuery и сделать вызов веб-службы с помощью getJSON

Или вы могли бы использовать official json parser.

+0

В настоящее время я использую Dojo. Знаете ли вы об эквивалентной функции в библиотеке Доджо? – Achilles

+1

выглядит как функция dojo.fromJson, которая сделает это. –

0

Пробег: Dojo.json упаковка. Он содержит функции Json() и Json().

Вы не должны использовать eval(), если вы не действительно доверяете своему провайдеру данных. eval() может оценивать функции и вызывать их, может создавать случайные исключения и т. д. Используйте библиотеки, и вы будете на более безопасной стороне.

EDIT ::

crescentfresh отметил, что dojo.fromJson() является просто оболочкой для Eval(). Это правда, к сожалению, но даже при JSON.org они говорят, что Eval() может быть проблемой безопасности, и они должны знать, что они говорят о :)

Вы можете использовать внешний JSON парсер (см: code.google.com/p/json-sans-eval для пример), или просто использовать dojo.fromJson() и надеемся, что они будут улучшать его в следующей версии

+3

Вот вся реализация '. Dojo.fromJson' ':' function (s) {return eval ("(" + s + ")")} '. Посмотрите сами: http://svn.dojotoolkit.org/src/tags/release-1.3.2/dojo/_base/json.js –

+0

Нет причин включать еще одну библиотеку для использования 1 или 2 методов; просто сделайте, как говорит olliej ниже и перейдите на json.org и получите json2.js. – ken

Смежные вопросы