Как правильно интерпретировать полученный в виде строки объект JSON? - PullRequest
2 голосов
/ 16 сентября 2010

У меня сломан веб-сервис, к которому я не могу получить доступ и изменить.Он отправляет некоторый в основном хороший JSON, но один из атрибутов - это вложенный объект JSON, который отправляется в виде строки.

http://www.ireland.com/api/getitemweb/185213
CustomJsonData в ответе из приведенного выше URL-адреса является примером.

Мой вопрос заключается в том, как я могу интерпретировать строку CustomJsonData как объект?

Я думал, что 'зло' eval () может это сделать, но не повезло.Спасибо, Денис

Ответы [ 3 ]

6 голосов
/ 16 сентября 2010

Если вы используете eval, вам нужно добавить (и) в строку перед eval:

var parsedObject = eval("(" + jsonString + ")");

Однако, как вы сказали, eval - это зло, лучше использовать parseJson из jquery (и лишних паренов не требуется):

var parsedObject = Jquery.parseJSON(jsonString);

Документация для jQuery parseJSON: http://api.jquery.com/jQuery.parseJSON/

4 голосов
/ 16 сентября 2010

Используйте реализацию Дугласа Крокфорда: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Пример:

var obj = JSON.parse(aJsonString);

Обрабатывает вложенные массивы, объекты и т. Д.

0 голосов
/ 16 сентября 2010

Вам необходимо проанализировать данные дважды - один раз для анализа всей строки JSON API и один раз для анализа пользовательской строки JSON.

function parseJSON(data) {
    return JSON ? JSON.parse(data) : eval('(' + data + ')');
}

var data = parseJSON(apiStr);
var custom = parseJSON(data.CustomJsonData);
...