Сериализация в JSON в jQuery [дубликат]

На этот вопрос уже есть ответ:

Мне нужно сериализовать объект в JSON . Я использую jQuery . Есть ли «стандартный» способ сделать это?

Моя конкретная ситуация: у меня есть массив, определенный как показано ниже:

var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
...

, и мне нужно превратить это в строку для передачи $.ajax() так:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: "{'countries':['ga','cd']}",
...
1177
задан Zach 3 July 2019 в 04:50
поделиться

4 ответа

JSON-js - JSON в JavaScript.

Чтобы преобразовать объект в строку, используйте JSON.stringify :

var json_text = JSON.stringify(your_object, null, 2);

Чтобы преобразовать строку JSON в объект, используйте JSON.parse :

var your_object = JSON.parse(json_text);

Недавно он был рекомендован Джоном Ресигом :

... ПОЖАЛУЙСТА, начните миграцию ваши приложения, использующие JSON, на Json2.js Крокфорда. Это полностью совместим с ECMAScript 5 спецификации и изящно деградирует если нативная (более быстрая!) реализация существует.

Фактически, я только вчера внес изменение в jQuery, которое использует Метод JSON.parse, если он существует, сейчас что он был полностью определен.

Я склонен доверять тому, что он говорит о вопросах JavaScript :)

Все современные браузеры (и многие старые, не древние) поддерживают объект JSON изначально. Текущая версия библиотеки JSON Крокфорда будет определять только JSON.stringify и JSON.parse , если они еще не определены, оставляя нетронутыми все собственные реализации браузера.

1131
ответ дан 19 December 2019 в 20:14
поделиться

Я не использовал его, но Вы могли бы хотеть попробовать плагин jQuery, записанный Mark Gibson

, Это добавляет две функции: $.toJSON(value), $.parseJSON(json_str, [safe]).

44
ответ дан Imad Alazani 3 July 2019 в 04:50
поделиться

Нет, стандартный способ сериализировать к JSON состоит в том, чтобы пользоваться существующей библиотекой сериализации JSON. Если Вы не хотите делать это, то Вы оказываетесь перед необходимостью писать свои собственные методы сериализации.

, Если Вы хотите руководство о том, как сделать это, я предложил бы исследовать источник некоторых доступных библиотек.

РЕДАКТИРОВАНИЕ: я не собираюсь выходить и говорить, что запись Ваших собственных serliazation методов плоха, но необходимо полагать, что, если для приложения важно использовать правильно построенный JSON, тогда необходимо взвесить издержки "еще одной зависимости" против возможности, что пользовательские методы могут однажды встретиться со случаем возникновения отказов, который Вы не ожидали. Приемлем ли тот риск, Ваш вызов.

35
ответ дан Adam Bellaire 3 July 2019 в 04:50
поделиться

Если вы не хотите использовать внешние библиотеки, есть .toSource () собственный метод JavaScript, но он не совсем кроссбраузерный.

11
ответ дан 19 December 2019 в 20:14
поделиться