javascript将不规划的数据格式化为json数据格式

7 篇文章 0 订阅
1 篇文章 0 订阅
	Bee.JsonUtils = {
		/**
		 * 把不规范的json字符串转为规范的json对象
		 * @param {String} str
		 */
		format2Json:function(str){
			var json={};
			if(!str){return json;}
			var result=str.replace(/(['"]?)[\r\n\s]*(\w+)[\r\n\s]*\1[\r\n\s]*(:)[\r\n\s]*([^{},\[\]]+)?/g,function(item,quote,key,delimiter,value){
				//双引号包裹
				quote="\"";
				key=quote+key+quote;
				if(value){
					if(/^(['"])[\s\S]*\1$/.test(value)){
						value=value.replace(/^(['"])([\s\S]*)\1$/,function(item,g1,g2){
							g1=quote;
							return g1+Bee.JsonUtils.escape(g2)+g1;
						});
					}else{
						if(/^[-+]?(?:[1-9]\d*|0)(?:\.\d+)?$/.test(value)){
							value=(+value);
						}else{
							value=quote+Bee.JsonUtils.escape(value)+quote;
						}
					}
				}else{
					value="";
				}
				return key+delimiter+value;
			});
			try{
				json= JSON.parse(result);
			}catch(e){
				return json;
			}
			return json;
		},
		escape:function(str){
			if(!str){return "";}
			var escapes={
				"\n":'\\n',
				"\"":'\\"',
				"\\":'\\\\',
				"\b":'\\b',
				"\f":'\\f',
				"\r":'\\r',
				"\t":'\\t'
			};
			return str.replace(/["\n\r\\\b\f\t]/g,function(item){
				return escapes[item];
			});
		}
	};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值