首页
> 计算机技术
> 前端开发
> JavaScript
js递归算法编解码引起JSON解析出错的特殊字符
原创 lihf8515于2025年02月07日 11:14发表
来源:本站 阅读:87
我们在用js解析JSON字符串时,由于其中可能带有一些特殊字符,比如:逗号,感叹号,星号等,容易导致解析出错。为此,我们编写以下函数,实现这些特殊字符的转义,从而保证JSON解析正确。
/* 编码引起JSON解析出错的特殊字符 */
function encode_special_char(str){
var ret_str = "";
if(String(str).length == 0) return ret_str;
ret_str = String(str).replace(/\(/g, "(");
ret_str = ret_str.replace(/\)/g, ")");
ret_str = ret_str.replace(/\'/g, "'");
ret_str = ret_str.replace(/\!/g, "!");
ret_str = ret_str.replace(/\*/g, "*");
ret_str = ret_str.replace(/\,/g, ",");
return ret_str;
}
/* 解码引起JSON解析出错的特殊字符 */
function decode_special_char(str){
var ret_str = "";
if(String(str).length == 0) return ret_str;
ret_str = String(str).replace("(", /\(/g);
ret_str = ret_str.replace(")", /\)/g);
ret_str = ret_str.replace("'", /\'/g);
ret_str = ret_str.replace("!", /\!/g);
ret_str = ret_str.replace("*", /\*/g);
ret_str = ret_str.replace(",", /\,/g);
return ret_str;
}
//递归编码引起JSON解析错误的特殊字符
function recursion_encode_special_char(value){
var obj = value;
if(Array.isArray(obj) || Object.prototype.toString.call(obj) === '[object Object]'){
for(var item in obj){//是数组或对象,则递归遍历每个元素,替换特殊字符
obj[item] = recursion_encode_special_char(obj[item]);
}
}else{//是字符串直接替换特殊字符
obj = encode_special_char(obj);
}
return obj;
}
上一篇:js获取指定天数后的日期时间
阅读排行榜