自制json转化函数

自制json转化函数

月光魔力鸭

2018-08-30 18:38 阅读 665 喜欢 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不太好调试,且性能稍微有点下降,不过也还好了。 至于网上所说的安全性问题,我觉的不是很大,具体可以参考undefined,有比较详细的解答,相信各位看官能够自行理解。

三、自己实现

如果以上两种都不满足的话,可以自行实现这些需求。 我现在用的反序列化是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识别率要更高些,使用起来也更简单,不需要安装其他依赖软件。
今天小程序上传体验版本后莫名无法获取用户数据,但是本地开发环境是正常的,通过开发工具的真机进行测试也正常,但是通过开发工具的预览又不正常,初步来看代码是没有问题的,可能是哪里设置有问题。
我们有时候会拿textarea来做编辑器,但是常用编辑器都是支持tab缩进的,这里对textarea监听下事件处理下即可实现。
在文件上传的时候,经常会对文件的mime进行限制,比如图片 image/jpg 等,让用户可以选择图片,而不是其他的文件。
web网站上总会有在文本域中提交代码的操作,那么如何处理呢?
之前的时候都是在各大主机厂商手动进行申请免费的,直到阿里的免费期限变更为3个月.. 我就开始觉的有些麻烦了,还不如使用这个let's encrypt进行部署呢。
关于web打印,需要对页面内容进行页面样式设置,呈现出分页的样子,同时对于题目中的图片或表格尽量不分到两个页面中,因此实现了一个jquery的web打印插件,当然,这个插件目前只适用于部分情况,仅供借鉴
之前一直没面试过前端,今天有一个,先整理下需要问的问题和答案。这里都是一些简单的问题,关于当下比较流行的框架并没有涉及到..