if (!this.json) {
    json = function () {
    		//新建对象
				Object.prototype.newobject = function ()
				{
					return new Object();
				}
    		
    		//设置属性
				Object.prototype.set = function (aprop,aval)
				{
					this[aprop] = aval;
				}
				
				//读取属性
				Object.prototype.get = function ( aprop )
				{
					if(this[aprop])return this[aprop];
					else if(this[aprop]==""||this[aprop]==false||this[aprop]==0)return this[aprop];
					return null;
				}
				
				
				
				//解析JSON字符串
				Object.prototype.parsejson = function(astr)
				{
					return json.parse(astr,'');
				}
				
				//序列化为JSON字符串
				Object.prototype.toString = function()
				{
					return json.serialobject(this);
				}
				
				//序列化为JSON字符串
				Object.prototype.tostring = function()
				{
					return json.serialobject(this);
				}
				
				//解析键值列表
				Object.prototype.keys = function()
				{
					var ret = [];
					for(var p in this)
						if(this[p])
							if(typeof this[p]!="function")
								ret[ret.length]=p;
					return ret;
				}
				
				//判断对象类型
				Object.prototype._nameOfClass = function( objClass )
				{
				  // 如果是自定义类，则使用构造函数名称
				  if( objClass && objClass.constructor )
				  {
				    var strFun = objClass.constructor.toString();
				    var clsName = strFun.substr( 0, strFun.indexOf( '(' ) );
				    clsName = clsName.replace( 'function', '' );
				    return clsName.replace( /(^\s*)|(\s*$)/ig, '' );
				  }
				  // 系统类直接返回
				  return typeof( objClass );
				}
				
				//扁平化对象
				Object.prototype._flatobject = function(aobj,aflat)
				{
					var base = [];
					for(var p in aobj)
					{
						if(aobj[p])
						{
							if(typeof aobj[p]!="function")
							{
								var v = aobj[p];
								if(typeof v=="object")
								{
									var vcls = this._nameOfClass(v);
									if(vcls=="Array")
									{
										base = base.concat(v);
										if(!aflat[p])aflat[p]=[];
										aflat[p]=aflat[p].concat(v);
										for(var i=0;i<v.length;i++)
										{
											if(!aflat[v[i]])aflat[v[i]]=[];
											aflat[v[i]][aflat[v[i]].length]=v[i];
										}
									}
									else
									{
										var pbase = this._flatobject(v,aflat);
										base = base.concat(pbase);
										if(!aflat[p])aflat[p]=[];
										aflat[p]=aflat[p].concat(pbase);
									}
								}
								else
								{
									base[base.length]=v;
									if(!aflat[p])aflat[p]=[];
									aflat[p][aflat[p].length]=v;
									if(!aflat[v])aflat[v]=[];
									aflat[v][aflat[v].length]=v;
								}
							}
						}
					}
					return base;
				}
				/*
				//将对象扁平化
				Object.prototype.flats = function()
				{
					var ret = {};
					this._flatobject(this,ret);
					for(var r in ret)
					{
						var ra = ret[r];
						if(typeof ra!="function")
						{
							var rk = {};
							var rn = [];
							for(var i=0;i<ra.length;i++ )
							{
								if(rk[ra[i]])continue;
								rk[ra[i]]=true;
								rn[rn.length]=ra[i];
							}
							if(rn.length>0)ret[r]=rn;
							else delete ret[r];
						}
					}
					return ret;
				}
				*/
				//转换为序列对象
				Object.prototype._toseriallist = function(sp,slist)
				{
					if(slist)
					{
						for(var p in this)
						{
							var skey = p;
							if(sp)skey = sp + "." + skey;
							var pt = this[p];
							if(typeof pt=="function")continue;
							if(typeof pt=="object")
							{
								if(typeof pt.length==='number'&&!(pt.propertyIsEnumerable('length'))) 
								{
									//如果是数组
									for(var i=0;i<pt.length;i++)
									{
										if(typeof pt[i]=="function")continue;
										if(typeof pt[i]=="object")
										{
											pt[i]._toseriallist(skey,slist);
										}
										else
										{
											slist[pt[i]] = skey;
										}
									}
								}
								else
								{
									//对象
									pt._toseriallist(skey,slist);
								}
							}
							else
							{
								//数据
								slist[ pt + "" ] = skey;
							}
						}
					}
				}
				
				//转换为字符串列表
				Object.prototype.tostringlist = function(list)
				{
					if(list)
					{
						var slist = {};
						this._toseriallist( "",slist );
						for(var k in slist)
						{
							var vitem = slist[k];
							if(typeof vitem!="function")
							{
								list.values(k) = slist[k];
							}
						}
					}
				}
				
				//创建数组
				Object.prototype.newarray = function()
				{
					return new Array();
				}
				
        function f(n) {
            return n < 10 ? '0' + n : n;
        }
				
        Date.prototype.toJSON = function () {

            return this.getUTCFullYear()   + '-' +
                 f(this.getUTCMonth() + 1) + '-' +
                 f(this.getUTCDate())      + 'T' +
                 f(this.getUTCHours())     + ':' +
                 f(this.getUTCMinutes())   + ':' +
                 f(this.getUTCSeconds())   + 'Z';
        };


        var m = {
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

        function stringify(value, whitelist) {
            var a,
                i,
                k,
                l,
                r = /["\\\x00-\x1f\x7f-\x9f]/g,
                v;

            switch (typeof value) {
            case 'string':

                return r.test(value) ?
                    '"' + value.replace(r, function (a) {
                        var c = m[a];
                        if (c) {
                            return c;
                        }
                        c = a.charCodeAt();
                        return '\\u00' + Math.floor(c / 16).toString(16) +
                                                   (c % 16).toString(16);
                    }) + '"' :
                    '"' + value + '"';

            case 'number':

                return isFinite(value) ? String(value) : 'null';

            case 'boolean':
            case 'null':
                return String(value);

            case 'object':

                if (!value) {
                    return 'null';
                }

                if (typeof value.toJSON === 'function') {
                    return stringify(value.toJSON());
                }
                a = [];
                if (typeof value.length === 'number' &&
                        !(value.propertyIsEnumerable('length'))) {

                    l = value.length;
                    for (i = 0; i < l; i += 1) {
                        a.push(stringify(value[i], whitelist) || 'null');
                    }

                    return '[' + a.join(',') + ']';
                }
                if (whitelist) {

                    l = whitelist.length;
                    for (i = 0; i < l; i += 1) {
                        k = whitelist[i];
                        if (typeof k === 'string') {
                            v = stringify(value[k], whitelist);
                            if (v) {
                                a.push(stringify(k) + ':' + v);
                            }
                        }
                    }
                } else {

                    for (k in value) {
                        if (typeof k === 'string') {
                            v = stringify(value[k], whitelist);
                            if (v) {
                                a.push(stringify(k) + ':' + v);
                            }
                        }
                    }
                }
                return '{' + a.join(',') + '}';
            }
        }
				
        return {
            stringify: stringify,
            parse: function (text, filter) {
                var j;
                function walk(k, v) {
                    var i, n;
                    if (v && typeof v === 'object') {
                        for (i in v) {
                            if (Object.prototype.hasOwnProperty.apply(v, [i])) {
                                n = walk(i, v[i]);
                                if (n !== undefined) {
                                    v[i] = n;
                                }
                            }
                        }
                    }
                    return filter(k, v);
                }
                if (/^[\],:{}\s]*$/.test(text.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) 
                {
                    j = eval('(' + text + ')');
                    return typeof filter === 'function' ? walk('', j) : j;
                }
                throw new SyntaxError('parseJSON');
            },
            objtype: function(aobj){return typeof aobj},
            objkeys: function(aobj,keys){for(var p in aobj)if(aobj[p])if(typeof aobj[p]!="function")keys.add(p);},
            objarray: function(aobj){if(typeof aobj=="object")return aobj.length?true:false;return false;},
            objget: function(aobj,prop){return aobj[prop];},
            objset: function(aobj,prop,aval){aobj[prop]=aval;},
            eval:function(astr){return eval(astr);},
						serialobject: function(aobj){return json.stringify(aobj);},
            arrpop: function(aarr){return aarr.pop();},
            arrshift: function(aarr){return aarr.shift();},
            arrunshift: function(aarr,aval){aarr.unshift(aval);},
            arrread: function(aarr,idx){return aarr[idx];},
            arrwrite: function(aarr,idx,aval){aarr[idx]=aval;},
            arrjoin: function(aarr,comp){return aarr.join(comp);},
            arrsplit: function(acont,comp){return acont.split(comp);}
        };
    }();
}