自制json转化函数

自制json转化函数

月光魔力鸭

2018-08-30 18:38 阅读 452 喜欢 0 json转化 对象转string

在web开发过程中,现在JSON 已经到了俯拾皆是的地步了,操作JSON对于JS来说非常简单,那么我们对于JSON的转化是如何应对的呢?

一、JSON插件

json2.js

json2.js主要功能是做什么的? json2.js提供了json的序列化和反序列化方法,可以将一个json对象转换成json字符串,也可以将一个json字符串转换成一个json对象。 json2.js在浏览器不支持json.parse的内置方法时,最有效。json2.js会创建一个内部的全局变量,提供json对象与字符串之间的转换。

二、浏览器自带

常用的eval 方法,可以将json字符串转化为js对象,不过eval不太好调试,且性能稍微有点下降,不过也还好了。 至于网上所说的安全性问题,我觉的不是很大,具体可以参考知乎,有比较详细的解答,相信各位看官能够自行理解。

三、自己实现

如果以上两种都不满足的话,可以自行实现这些需求。 我现在用的反序列化是eval ,序列化是自己写的,下面贴出代码,各位看官顺便提出下各自的见解。

stringfy : function(obj){
        if(null == obj || obj == undefined)return undefined;
        if(typeof obj == 'string')return obj;
        if(typeof obj =='number')return obj;
        var arrParse = function(temp){
            var tempstr = [];
            tempstr.push('[');
            for(var i=0;i<temp.length;i++){
                var tempobj = temp[i];
                var str = switchObj(tempobj);
                tempstr.push(str);
                if(i != temp.length-1){
                    tempstr.push(',');
                }
            }
            tempstr.push(']');
            return tempstr.join('');
        
        };
        var switchObj  = function(tempobj){
            if(typeof tempobj == 'object'){
                if(tempobj instanceof Array){
                    return arrParse(tempobj);
                }else if(tempobj instanceof Object){
                    return objParse(tempobj);	
                }
            }else if(typeof tempobj == 'function'){
                return ''+tempobj.toString()+'';
            }else{
                return '"'+tempobj+'"';
            }
            return '';
        };
        var objParse = function(obj){
            var htmls = [];
            htmls.push('{');
            for(var p in obj){
                var tempobj = obj[p];
                var str= switchObj(tempobj);
                htmls.push('"'+p+'":'+str+'');
                htmls.push(',');
            }
            htmls.splice(htmls.length-1);
            htmls.push('}');
            return htmls.join('');
        };
        return switchObj(obj);
    }

小白的写法,字符串拼接,刚接触JS ,勿喷...

转载请注明出处: https://chrunlee.cn/article/parse-json-to-string.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
jsQR 是一款纯粹的由javascript实现的二维码识别库,可以在浏览器端使用,也可以在后端node.js环境使用。我之前使用过其他的识别库,例如:qrcode-reader 或其他,在使用上都比较麻烦,而且识别率并不高。jsQR是后来发现的,感觉(没有实际对比验证)jsQR识别率要更高些,使用起来也更简单,不需要安装其他依赖软件。
最近一直在想着抓一些网盘数据,进行资料归拢,可是当我真正开始的时候.. 还是遇到了反爬,当然我本身就有心理预期,这是肯定会碰到的,只是没想到会在代理IP上耗费这么久,之前的时候也处理过代理IP ,可是由于一知半解,导致很多配置都不理解,debug全靠猜...
关于jquery,他的核心特点就是无new构造和链式调用,这里根据网上的资料,自己简单理解下,有助于消化核心代码。
对于web开发过程中的JS对象 Array ,我们真的充分使用了么?是不是理解了Array的全部?能够在合适的地点调用合适的函数,使用合适的属性?
项目中需要使用treegrid,找了下easyui 和 ext都有,但是项目用的框架是 byyui,如果为了treegrid 就把这些都加载的话,感觉不太合算。找了大家常用的基于jquery的treegrid.
错误:The operation is insecure . 在使用canvas的 toDataUrl的时候报错,看了很多资料,基本上都说是设置跨域,但是我一直都有的啊。其实,只是顺序错了,setAttribute('crossOrigin','Anonymous') 要在设置 src之前设置。
突然来了一个调研任务,想要实现一个类似3D虚拟展厅类似的需求,主要就是放一些学生的作品,然后预览啥的,效果还是要全景的效果。 经过一番调查,最终锁定了以前从未接触过的krpano。
新增需求:在tinymce上增加一个着重号的插件