/* json.js 2006-10-05 This file adds these methods to JavaScript: object.toJSONString() This method produces a JSON text from an object. The object must not contain any cyclical references. array.toJSONString() This method produces a JSON text from an array. The array must not contain any cyclical references. string.parseJSON() This method parses a JSON text to produce an object or array. It will return false if there is an error. It is expected that these methods will formally become part of the JavaScript Programming Language in the Fourth Edition of the ECMAScript standard. */ (function () { var m = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' }, s = { array: function (x) { var a = ['['], b, f, i, l = x.length, v; for (i = 0; i < l; i += 1) { v = x[i]; f = s[typeof v]; if (f) { v = f(v); if (typeof v == 'string') { if (b) { a[a.length] = ','; } a[a.length] = v; b = true; } } } a[a.length] = ']'; return a.join(''); }, 'boolean': function (x) { return String(x); }, 'null': function (x) { return "null"; }, number: function (x) { return isFinite(x) ? String(x) : 'null'; }, object: function (x) { if (x) { if (x instanceof Array) { return s.array(x); } // alert(3333); var a = ['('], b, f, i, v; for (i in x) { v = x[i]; f = s[typeof v]; if (f) { v = f(v); if (typeof v == 'string') { if (b) { a[a.length] = ','; } a.push(s.string(i), ':', v); b = true; } } } a[a.length] = ')'; return a.join(''); } return 'null'; }, string: function (x) { if (/["\\\x00-\x1f]/.test(x)) { x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) { var c = m[b]; if (c) { return c; } c = b.charCodeAt(); return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); }); } return '"' + x + '"'; } }; Object.prototype.toJSONString = function () { return s.object(this); }; Array.prototype.toJSONString = function () { return s.array(this); }; })(); String.prototype.parseJSON = function () { try { //alert(this); //alert( eval( '') ); return (/^("(\\.|[^"\\\n\r])*?"|[,:\(\)\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(this)) && eval('(' + this.split(')').join('}').split('(').join('{') + ')'); } catch (e) { return false; } };