JSON stringify отсутствует в jQuery 1.4.1?

Очевидно, что jQuery имеет возможность декодировать данный объект или строку в объект JSON. Тем не менее, у меня есть объект JS, который мне нужно отправить POST на сервер, и я не нахожу в jQuery утилиту, которая обертывает функцию JSON.stringify (). Эта функция найдена в Chrome, Safari 4, FF3.6 и IE8, но не найдена в более ранних браузерах. Я могу использовать его изначально в браузерах, которые его поддерживают, но в противном случае я вынужден вернуться к использованию сценариев JSON от Crockford.

Есть ли встроенная функция jQuery, которая обрабатывает кодировку и декодирование JSON, заменяющую скрипты Crockford?

Вы можете проверить это: http://www.json.org/js.html

Вы можете использовать «Closure Library» (Google) для создания кодировщика / декодера JSON с перекрестным браузером.

Просто зайдите на http://closure-compiler.appspot.com/

и вставьте следующее в текстовое поле, затем нажмите «Скомпилировать»:

// ==ClosureCompiler== // @compilation_level ADVANCED_OPTIMIZATIONS // @output_file_name default.js // @use_closure_library true // ==/ClosureCompiler== goog.require('goog.json'); if (!window['JSON']) window['JSON']={}; if (typeof window['JSON']['stringify'] !== 'function') window['JSON']['stringify']=goog.json.serialize; if (typeof window['JSON']['parse'] !== 'function') window['JSON']['parse']=goog.json.parse; 

jQuery может декодировать строки JSON изначально с помощью jQuery.parseJSON() .

Хотя для кодирования я знаю только плагин: jquery-json

jQuery не нуждается в этой функции внутренне и, таким образом, не обеспечивает удобный метод для этого.

JSON.stringify () является стандартным и рекомендуемым способом кодирования объекта в строковое представление JSON этого объекта. Это метод родного объекта JSON во многих браузерах, и рекомендуется использовать json2.js (https://github.com/douglascrockford/JSON-js), чтобы обеспечить резерв.

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

(function() { function g(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null"; else if("function"==b&&"undefined"==typeof a.call)return"object";return b};function h(a){a=""+a;if(/^\s*$/.test(a)?0:/^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x10-\x1f\x80-\x9f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,"")))try{return eval("("+a+")")}catch(b){}throw Error("Invalid JSON string: "+a);}function i(a,b){var c=[];j(new k(b),a,c);return c.join("")}function k(a){this.a=a} function j(a,b,c){switch(typeof b){case "string":l(b,c);break;case "number":c.push(isFinite(b)&&!isNaN(b)?b:"null");break;case "boolean":c.push(b);break;case "undefined":c.push("null");break;case "object":if(null==b){c.push("null");break}if("array"==g(b)){var f=b.length;c.push("[");for(var d="",e=0;eb?d+="000":256>b?d+="00":4096>b&&(d+="0");return m[a]=d+b.toString(16)}),'"')};window.JSON||(window.JSON={});"function"!==typeof window.JSON.stringify&&(window.JSON.stringify=i);"function"!==typeof window.JSON.parse&&(window.JSON.parse=h); })();

Теперь вы можете позвонить:

var JSONString = JSON.stringify({name: 'value'});

Часто при использовании jQuery функция JSON.stringify () не требуется. Возьмем, к примеру, обычный случай использования ajax для отправки данных javascript на сервер, jquery имеет встроенные функции для обработки этого: (примеры из http://api.jquery.com/category/ajax/ )

 $.post("test.php", { name: "John", time: "2pm" } ); $.post("test.php", { 'choices[]': ["Jon", "Susan"] }); $.getJSON("test.js", { name: "John", time: "2pm" }, function(json) { alert("JSON Data: " + json.users[3].name); }); 

Во всех приведенных выше примерах отправленные javascript данные сериализуются jQuery автоматически.

Сериализация в этих случаях не такая же, как JSON.Stringify (), вместо этого данные сериализуются в строку запроса html (см. http://en.wikipedia.org/wiki/Query_string#Structure ).

Однако эта форма сериализации подходит для большинства (но не для всех) приложений

Interesting Posts
Давайте будем гением компьютера.