TROIKA.ASP - the MVC framework

Json.js

Summary

Contains JSON class.

The global object JSON contains two methods.

JSON.stringify(value) takes a JavaScript value and produces a JSON text. The value must not be cyclical.

JSON.parse(text) takes a JSON text and produces a JavaScript value. It will return false if there is an error.



Version: $Revision: 1.3 $

Author: (c)2005 JSON.org www.JSON.org


/**
* @fileoverview Contains <tt>JSON</tt> class.

<p>
The global object JSON contains two methods.
</p>

<p>
JSON.stringify(value) takes a JavaScript value and produces a JSON text.
The value must not be cyclical.
</p>

<p>
JSON.parse(text) takes a JSON text and produces a JavaScript value. It will
return false if there is an error.
</p>

@author (c)2005 JSON.org {@link http://www.JSON.org/ www.JSON.org}
@version $Revision: 1.3 $
*/
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] = ']';
                }
                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.
        */
        stringify : 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.
        */
        parse : function (text) {

            try {

                //return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(text.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + text + ')');
                return eval('(' + text + ')');
            }
            catch (e) {

                return false;
            }
        }
    };
}
();

TROIKA.ASP - the MVC framework

www.troika-asp.com
Documentation generated on Sun Jun 15 17:59:32 2008