Javascript и JSON - PullRequest
       15

Javascript и JSON

1 голос
/ 03 декабря 2010

Это будет работать:

var json = { 'items': [{ 'id': 72, 'quantity': 1, 'format': '90ml' }, { 'id': 72, 'quantity': 4, 'format': '70ml'}] }
alert(json.items[1].id);

Это НЕ будет работать:

var json = $.cookie('json_string');
alert(json.items[1].id);

json_string в файле cookie точно такой же, как в примере # 1. Дурачившись, я понял, что мне нужно сделать это, чтобы все заработало:

    eval("var json = " + $.cookie("json_cart"));

Это правильный способ сделать это? Это похоже на хак, я сталкиваюсь с некоторыми трудностями при попытке сделать это общение javascript / c # json, я думал, что это будет очень легко. Тем не мение. По крайней мере, я запустил его сейчас.

Ответы [ 5 ]

12 голосов
/ 03 декабря 2010

Это НОРМАЛЬНЫЙ

Чтобы десериализовать строку в объект и предполагая, что вы ориентируетесь на современные браузеры, вы можете использовать встроенную функцию для:

var myObj = JSON.parse($.cookie('json_string'));

Или вы можете импортировать json2.js с официального сайта JSON и использовать ту же строку, что и выше.

Или, , как указано в subhaze , вы можете быть полностью jQuery-y и использовать:

var myObj = jQuery.parseJSON('{"name":"John"}');

Примечание о кодировке URL

Если строка закодирована в файле cookie, вам необходимо сначала ее декодировать, используя decodeURIComponent(), например:

var myObj = JSON.parse(decodeURIComponent($.cookie('json_string')))

Примечание о цитируемых ключах

Ваш JSON на самом деле недействителен, так как требует ключей в двойных кавычках. Вы должны использовать двойные кавычки ("), чтобы обернуть вокруг ваших ключей и строковых значений.

Проверить

Чтобы быстро проверить правильность вашего JSON, попробуйте JSONLint .


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

.
4 голосов
/ 03 декабря 2010

Примечание

Чтобы любой из этих двух методов работал, ваш String должен быть записан как действительный JSON.

В вашем примере вам нужно заключить ключи в двойные кавычки ", а не в один '.

{"key":value}

Похоже, вы используете jQuery, если это так. Это должно работать.

jQuery : Живой пример

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

Пример, полученный из jQuery parseJson


Как указано haylem , если вы не используете библиотеку json2.js будет работать:

json2 : Живой пример

var obj = JSON.parse('{"name":"John"}');
alert( obj.name === "John" );
2 голосов
/ 03 декабря 2010

Нет. Используйте json2.js.

0 голосов
/ 03 декабря 2010

Я вижу, что вы используете JQuery. Не используйте eval, потому что это может быть небезопасно; используйте $. parseJSON .

0 голосов
/ 03 декабря 2010

Вы должны проанализировать содержимое вашего куки.Решение бедного человека говорит eval () это, так как json является допустимым синтаксисом javascript.Хорошие решения разработчика требуют использования библиотеки для анализа json:)

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