/**//* json.js 2006-04-28 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. */ (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); } 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{ return!(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( this.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('('+this+')'); }catch (e) { returnfalse; } };
posted on
2006-08-24 10:02komazhang
阅读(264)
评论(0)
收藏举报