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];
});
}
};