首页 > 计算机技术 > 前端开发 > JavaScript

js递归算法编解码引起JSON解析出错的特殊字符

原创 lihf8515 2025年02月07日 11:14
来源:本站 阅读:428

我们在用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;
}
作者
昵称:君子如兰
注册时间:2025-01-31 02:47:34
最近更新:2026-01-24 17:01:06
文章总数:94篇
原创 88篇   转载 6篇
友情链接: 海峰收银系统  
Copyright © 2025 hfsoft.top All Rights Reserved.
中华人民共和国工业和信息化部ICP备案序号:皖ICP备2025073039号