`
deng131
  • 浏览: 662625 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaScript中json对象序列化转换

阅读更多

jquery实现方法是:
window.JSON && window.JSON.parse ?window.JSON.parse( data ):(new Function("return " + data))();
ext,dojo实现方法是:
eval("(" + json + ")"); // Object

比较好的方式:
JSON = {
    useHasOwn: ({}.hasOwnProperty ? true: false),
    pad: function(n) {
        return n < 10 ? "0" + n: n;
    },
    m: {
        "\b": '\\b',
        "\t": '\\t',
        "\n": '\\n',
        "\f": '\\f',
        "\r": '\\r',
        '"': '\\"',
        "\\": '\\\\'
    },
    encodeString: function(s) {
        if (/["\\\x00-\x1f]/.test(s)) {
            return '"' + s.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 '"' + s + '"';
    },
    encodeArray: function(o) {
        var a = ["["],b, i, l = o.length,v;
        for (i = 0; i < l; i += 1) {
            v = o[i];
            switch (typeof v) {
            case "undefined":
            case "function":
            case "unknown":
                break;
            default:
                if (b) {
                    a.push(',');
                }
                a.push(v === null ? "null": this.encode(v));
                b = true;
            }
        }
        a.push("]");
        return a.join("");
    },
    encodeDate: function(o) {
        return '"' + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-" + pad(o.getDate()) + "T" + pad(o.getHours()) + ":" + pad(o.getMinutes()) + ":" + pad(o.getSeconds()) + '"';},
    encode: function(o) {
        if (typeof o == "undefined" || o === null) {
            return "null";
        } else if (o instanceof Array) {
            return this.encodeArray(o);
        } else if (o instanceof Date) {
            return this.encodeDate(o);
        } else if (typeof o == "string") {
            return this.encodeString(o);
        } else if (typeof o == "number") {
            return isFinite(o) ? String(o) : "null";
        } else if (typeof o == "boolean") {
            return String(o);
        } else {
            var self = this;
            var a = ["{"],b,i,v;
            for (i in o) {
                if (!this.useHasOwn || o.hasOwnProperty(i)) {
                    v = o[i];
                    switch (typeof v) {
                    case "undefined":
                    case "function":
                    case "unknown":
                        break;
                    default:
                        if (b) {
                            a.push(',');
                        }
                        a.push(self.encode(i), ":", v === null ? "null": self.encode(v));
                        b = true;
                    }
                }
            }
            a.push("}");
            return a.join("");
        }
    },
    decode: function(json) {
        return eval("(" + json + ')');
    }
};


JSON.decode('{a:1}')
JSON.encode({a:1,b:{c:'2'}})


参考:
http://www.ramirezcobos.com/2009/12/30/json-jquery-plugin/
http://stackoverflow.com/questions/1184624/serialize-form-to-json-with-jquery
分享到:
评论

相关推荐

    JSON - 序列化stringify

    JavaScript提供的一个操作JSON序列化的方法,其作用:将JSON对象序列化为字符串(第一个参数);分离提取部分数据,转换处理键值(第二个参数);美化输出结果(第三个参数)

    json操作类库

    json2.js提供了json的序列化和反序列化方法,可以将一个json对象转换成json字符串,也可以将一个json字符串转换成一个json对象。

    jackson-js:使用装饰器JavaScript对象序列化和反序列化库。 它还支持高级对象概念,例如多态性,对象标识和循环对象

    杰克逊 顾名思义, jackson-js受到了著名的Java 启发。 它可以在客户端(浏览器)和服务器(Node.js)端使用。... 它不仅将JSON文本反序列化为JavaScript对象,还将其转换为context选项中指定的类

    Json、Webservice、Jquery、Ajax

    PreserveObjectReferences.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 PreserveReferencesHandling.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 ...

    JSON对象转化为字符串详解

    序列化 定义 指将 JavaScript 值转化为 JSON 字符串的过程。 JSON.stringify() 能够将 JavaScript 值转换成 JSON 字符串。JSON.stringify() 生成的字符串可以用 JSON.parse() 再还原成 JavaScript 值。 参数的含义 1...

    jquery.json2.4.js

    可序列化 JavaScript 对象、数值、字符串和数组到 JSON 字符串,同时可转换 JSON 字符串到 JavaScript。 var thing = {plugin: 'jquery-json', version: 2.3};//js对象 var encoded = $.toJSON( thing ); //转换...

    JavaScript常见JSON操作实例分析

    主要介绍了JavaScript常见JSON操作,简单描述了json的概念、常见json类型,并结合实例形式分析了json的序列化、转换、格式化、解析等相关操作技巧,需要的朋友可以参考下

    serializr:在JSON和Javascript类之间对复杂的对象图进行序列化和反序列化

    将复杂的对象图序列化和反序列化为JSON Serializr具有完整的功能,并且易于扩展。 由于没有活动的维护者,因此该项目将冻结功能。 错误报告和精心设计的提取请求将受到欢迎,并将得到解决。 想要维护一个小型开源...

    将JavaScript的jQuery库中表单转化为JSON对象的方法

    主要介绍了将JavaScript的jQuery库中表单转化为JSON对象的方法,包括对序列化时空格问题的处理方法,需要的朋友可以参考下

    详解python 3.6 安装json 模块(simplejson)

    序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。 JSON...

    vdom-as-json:将虚拟对象与JSON相互转换(未维护)

    将对象与JSON相互转换。 设计用于在服务器或Web Worker中生成虚拟节点,然后将其发送到客户端。 这个库可以序列化节点和补丁,但是由于底层的VirtualPatch结构,补丁JSON有点大。 有关更有效的补丁程序序列化算法...

    在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

    全局引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象 目标对象 = JavaScriptConvert.Deserialize... 序列化和反序列在.net项目中,简单示例 代码如下: Productprodu

    serialised-error:将错误对象序列化为普通对象

    该模块尝试将错误对象转换为常规JavaScript对象。 如果必须存储和操作错误对象,这将很有用。 用法 var SerialisedError = require ( 'serialised-error' ) ; // assuming you have an error var someError = new ...

    superjson:将JavaScript表达式安全地序列化为JSON的超集,其中包括Dates,BigInts等

    主要特点 :bento_box: 可靠的序列化和反序列化 :locked_with_key: 具有自动补全功能的类型安全 :paw_prints: 可以忽略的运行时占用空间 :dizzy: 框架不可知 :hammer_and_wrench: 完美解决getServerSideProps和...

    将数据类型序列化比如datatable转joson

    很多情况下,我们需要把数据类型做一些转换,供其它外部的子系统调用。最为典型的是生成json格式供javascript作调用。 序列化,反序列化的相互实现过程,编码中应该避免过度拼接的过程

    C#实现json格式转换成对象并更换key的方法

    由于是不标准的序列化对象类型,因此你无法通过标准的反序列化类来实现,需要自定义一个序列化类或者简单点,直接自定义一个方法解析Json数据。解析后的数据用Dictionary来存放。 string str = {\name\: \甄嬛体\,\...

    一个Vue.js组件,用于编辑已在PHP中序列化的数据-JavaScript开发

    要求Vue.js 2.x安装npm install @ deliciousbrains / serialized-editor //或yarn add @ deliciousbrains / serialized-editor用法该软件包分为两部分:SerializedParser类,用于将PHP序列化的字符串转换为JSON。...

    fastjson-1.2.83.jar下载

    fastjson-1.2.83.jar下载,fastjson是阿里巴巴的开源JSON解析库,可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也...6. 支持注解:fastjson支持多种注解配置JSON序列化和反序列化。 7. 支持携带格式:f

    js JSON.stringify()基础详解

    JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以选择性的替换值,或者如果指定了replacer是一个数组,可选择性的仅包含数组指定的属性。...

Global site tag (gtag.js) - Google Analytics