#7475 (http://dev.rubyonrails.org/ticket/7475) will fix this once it's
applied.

I admire the hell out of Doug Crockford, but sometimes I want to shove
a JSON string down his throat.

Cheers,
Andrew

On Feb 7, 10:21 pm, Ken Snyder <[EMAIL PROTECTED]> wrote:
> NL wrote:
> > When loading both Prototype Release 1.5 and the The open source code
> > of a JSON parser and JSON stringifier library (http://www.json.org/
> > json.js).
>
> > I tried this on Firefox 1.5.0.9 (Mac)
>
> > I haven't looked at the reason but have  a feeling this may impact
> > other libraries as well.
>
> Yes, thewww.json.orgimplementation has some funky stuff.  For one, in
> the current version (2007-01-10), Object.prototype.toJSONString will
> cause problems with lots of other JS code (anything that iterates
> objects with for-in).  Here is an implementation based on a previous
> json.org implementation.  There are lots of other flavors out there too.
> /*
> Copyright (c) 2005 JSON.org
> */
>
> /*
>     The global object JSON contains two methods.
>
>     JSON.encode(value) takes a JavaScript value and produces a JSON text.
>     The value must not be cyclical.
>
>     JSON.decode(text) takes a JSON text and produces a JavaScript value.
> It will
>     return false if there is an error.
> */
> var JSON = function () {
>     var m = {
>       '\b': '\\b',
>       '\t': '\\t',
>       '\n': '\\n',
>       '\f': '\\f',
>       '\r': '\\r',
>       '"' : '\\"',
>       '\\': '\\\\'
>   },
>   s = {
>       'boolean': function (x) {
>     return String(x);
>       },
>       number: function (x) {
>     return isFinite(x) ? String(x) : '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: function (x) {
>     if (x) {
>         var a = [], b, f, i, l, v;
>         if (x instanceof Array) {
>       a[0] = '[';
>       l = x.length;
>       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] = ']';
>                     //
>                     // Addition by Ken Snyder
>                     //
>         } else if (x instanceof HTMLElement || x==window || x==opener) {
>             return;
>         //
>         // End Addition
>         //
>         } else if (x instanceof Object) {
>       a[0] = '{';
>       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] = '}';
>         } else {
>       return;
>         }
>         return a.join('');
>     }
>     return 'null';
>       }
>   };
>     return {
> //  copyright: '(c)2005 JSON.org',
> //  license: 'http://www.JSON.org/license.html',
> /*
>     Stringify a JavaScript value, producing a JSON text.
> */
>   encode: function (v) {
>       var f = s[typeof v];
>       if (f) {
>     v = f(v);
>     if (typeof v == 'string') {
>         return v;
>     }
>       }
>       return null;
>   },
> /*
>     Parse a JSON text, producing a JavaScript value.
>     It returns false if there is a syntax error.
> */
>   decode: function (text) {
>       try {
>     return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
>       text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
>         eval('(' + text + ')');
>       } catch (e) {
>     return false;
>       }
>   }
>     };}();
>
> // optional compatibility with stringify/parse:
> JSON.stringify = JSON.encode;
> JSON.parse = JSON.decode;


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to