javascript 序列化 - 一个简短的库

标签 javascript arrays serialization deserialization

我必须在 cookie 中保存少量数据。

如果 javascript( native )提供一种序列化/反序列化数组(或对象)的方法,那就太好了。

说实话,我尝试编写自己的代码,它基于这样的想法:我们可以序列化数组,并在键/值查询字符串中递归地转换它,反之亦然。

嗯,这是代码:

var lib = {
    serialize : function(_a) {
        var s = '', enc = encodeURIComponent;
        for (var k in _a) {
            if (s) s += '&';
            s += enc(k) + '=' + ((typeof _a[k] == 'object') ? '?'+enc(lib.serialize(_a[k])) : enc(_a[k]));
        }
        return s;
    },
    deserialize : function(_s) {
        var a = [], dec = decodeURIComponent;
        var list = _s.split('&');
        for (var c in list) {
            var kv = list[c].split('=');
            var v = kv[1].split('?'); 
            kv[1] = (v.length > 1) ? lib.deserialize(dec(v[1])) : dec(kv[1]);
            a[dec(kv[0])] = kv[1];
        }
        return a;
    }
};

http://jsfiddle.net/P7wT8/

虽然它看起来工作得很好,但有人可以建议我一些更好、更短的东西吗? 一段代码或一个库,一些小而容易实现的 Javascript 数组序列化/反序列化?

最佳答案

我认为你最好的方法是 use JSON .

JSON.stringifyJSON.parse 可以对值进行编码和解码。 JSON 是当今的标准格式,因此其他开发人员可以更清楚地了解发生了什么。

唯一的限制是 IE 7 及更低版本本身不支持 JSON 函数,需要一个库。

关于javascript 序列化 - 一个简短的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162695/

相关文章:

c# - XML 序列化 + 命名空间 (C#)

Javascript if 语句拒绝从外部脚本 IE6 IE5.5 正确加载

javascript - 按键求和 Javascript 对象数组

javascript - string.split ('/' )没有给出正确的数组

javascript - 用引号在javascript中对数组进行排序

c# - 为什么会出现序列化错误?

C#反序列化xml文件

javascript - 如何根据 highcharts 中的值获得动态颜色变化

javascript - AngularJS 删除操作后更新 View

javascript - 在 Javascript 中使用 PHP 二维数组