• 【改进】在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);



  • 相关阅读:
    @Configuration和@Component区别
    ElasticSearch中text和keyword类型的区别
    Elasticsearch实战篇——Spring Boot整合ElasticSearch
    Elasticsearch入门篇——基础知识2
    学习Elasticsea从零学Elasticsearch系列——基础概念rch系列——(1)基础概念
    开发工具:IDEA类和方法注释模板设置(非常详细)
    项目中时间的处理,到最后的数据库
    详细刨析---电商系统之订单系统设计
    记录一下自己用springboot整合阿里巴巴开源的EasyExcel实现导入导出功能
    Springboot整合easyExcel导入导出Excel
  • 原文地址:https://www.cnblogs.com/w3live/p/2245396.html
Copyright © 2020-2023  润新知