`
holoblog
  • 浏览: 1224606 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18894
文章分类
社区版块
存档分类
最新评论

在JS端将JSON对象转化为字符串的方法

 
阅读更多

由于工作需要,要在JS端将JSON对象转化为字符串,并写到用户的COOKIE中,用来保存用户的一些个人操作习惯。便在网上搜寻了一遍,发现方法有很多,有些代码不清晰,看得乱,有些考虑不周全,生成的字符串有问题,便整合了一些好的写法,自己改进了一下。可能还是考虑得不周全,但是感觉常用的类型都考虑了,望大家多多拍砖指点!

JSON.stringify(jsonobj),本来是最简便的方法,可是存在浏览器兼容问题(仅适用于IE8+,Chrome 1+,FF 3+)。

var O2String = function (O) {
        //return JSON.stringify(jsonobj);

        var S = [];
        var J = "";
        if (Object.prototype.toString.apply(O) === '[object Array]') {
            for (var i = 0; i < O.length; i++)
                S.push(O2String(O[i]));
            J = '[' + S.join(',') + ']';
        }
        else if (Object.prototype.toString.apply(O) === '[object Date]') {
            J = "new Date(" + O.getTime() + ")";
        }
        else if (Object.prototype.toString.apply(O) === '[object RegExp]' || Object.prototype.toString.apply(O) === '[object Function]') {
            J = O.toString();
        }
        else if (Object.prototype.toString.apply(O) === '[object Object]') {
            for (var i in O) {
                O[i] = typeof (O[i]) == 'string' ? '"' + O[i] + '"' : (typeof (O[i]) === 'object' ? O2String(O[i]) : O[i]);
                S.push(i + ':' + O[i]);
            }
            J = '{' + S.join(',') + '}';
        }

        return J;
    };



/*-----------------------以下是测试代码-----------------------*/

var jsonStr = O2String(
                [
                    {
                        "Page": "plan",
                        "Custom":
                        [
                            {
                                "ItemName": "CustomLabel1",
                                "ItemContent": 1, 
                                "IsItem": true,
                                "ItemDate": new Date(1320774905467),
                                "ItemReg": /[\w]*?/gi,
                                "ItemFunc": function () { alert("ItemFunc"); }
                            },
                            {
                                "ItemName": "CustomLabel1",
                                "ItemContent": 1,
                                "IsItem": true,
                                "ItemDate": new Date(1320774905467),
                                "ItemReg": /[\w]*?/gi,
                                "ItemFunc": function () { alert("ItemFunc"); }
                            }
                        ]
                    },
                    {
                        "Page": "project",
                        "Custom":
                        [
                            {
                                "ItemName": "CustomLabel2",
                                "ItemContent": 2,
                                "IsItem": false,
                                "ItemDate": new Date(1320774905467),
                                "ItemReg": /[\w]*?/gi,
                                "ItemFunc": function () { alert("ItemFunc"); }
                            },
                            {
                                "ItemName": "CustomLabel2",
                                "ItemContent": 2,
                                "IsItem": false,
                                "ItemDate": new Date(1320774905467),
                                "ItemReg": /[\w]*?/gi,
                                "ItemFunc": function () { alert("ItemFunc"); }
                            }
                        ]
                    }
                ]
            );
            alert(jsonStr);
            var jsonObj = eval("(" + jsonStr + ")");
            alert(jsonObj.length);
1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics