var special = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' },
escape = function (chr) { return special[chr] || '\\u' + ('0000' + chr.charCodeAt(0).toString(16)).slice(-4); };
jQuery.stringifyJSON = function (data) {
// use native if exists
if (window.JSON && window.JSON.stringify)
return window.JSON.stringify(data);
switch (jQuery.type(data)) {
case 'string':
return '"' + data.replace(/[\x00-\x1f\\"]/g, escape) + '"';
case 'array':
return '[' + jQuery.map(data, jQuery.stringifyJSON) + ']';
case 'object':
var string = [];
jQuery.each(data, function (key, val) {
var json = jQuery.stringifyJSON(val);
if (json)
string.push(jQuery.stringifyJSON(key) + ':' + json);
});
return '{' + string + '}';
case 'number':
case 'boolean':
return '' + data;
case 'undefined':
case 'null':
return 'null';
}
return data;
};
escape = function (chr) { return special[chr] || '\\u' + ('0000' + chr.charCodeAt(0).toString(16)).slice(-4); };
jQuery.stringifyJSON = function (data) {
// use native if exists
if (window.JSON && window.JSON.stringify)
return window.JSON.stringify(data);
switch (jQuery.type(data)) {
case 'string':
return '"' + data.replace(/[\x00-\x1f\\"]/g, escape) + '"';
case 'array':
return '[' + jQuery.map(data, jQuery.stringifyJSON) + ']';
case 'object':
var string = [];
jQuery.each(data, function (key, val) {
var json = jQuery.stringifyJSON(val);
if (json)
string.push(jQuery.stringifyJSON(key) + ':' + json);
});
return '{' + string + '}';
case 'number':
case 'boolean':
return '' + data;
case 'undefined':
case 'null':
return 'null';
}
return data;
};