JavaScript 中 JSON 对象与字符串互转的多种实现方案

作者:代码拾荒

时间:2026-10-30

浏览:466

本文介绍了 JavaScript 中 JSON 对象与字符串相互转换的多种实现方式。涵盖使用 eval 解析、自定义递归序列化函数、处理数字类型忽略以及原生 JSON.stringify 方法。同时分析了各方案在浏览器兼容性方面的差异及注意事项,帮助开发者根据实际需求选择合适方案。

文章目录

JSON 对象与字符串互转概述

JavaScript 中 JSON 对象与字符串相互转换的简单实现


function obj2str(o){
  var r = [];
  if(typeof o == "string" || o == null) {
   return o;
  }
  if(typeof o == "object"){
   if(!o.sort){
    r[0]="{"
    for(var i in o){
     r[r.length]=i;
     r[r.length]=":";
     r[r.length]=obj2str(o[i]);
     r[r.length]=",";
    }
    r[r.length-1]="}"
   }else{
    r[0]="["
    for(var i =0;i<o.length;i++){
     r[r.length]=obj2str(o[i]);
     r[r.length]=",";
    }
    r[r.length-1]="]"
   }
   return r.join("");
  }
  return o.toString();
}

字符串转换为对象

使用 eval 进行字符串转对象


function taoRan(){
var str='{"result": [["提现", "219"], ["提现银行", "121"], ["退款", "272"], ["提现失败", "16"], ["团购", "15"], ["淘宝", "412"],["台湾", "58"], ["提现限额", "16"], ["提现时间", "81"], ["台湾认证", "26"]]}';
alert(strToObj(str).result[2]);
}
function strToObj(json){ 
     return eval("("+json+")"); 
}

一种非常实用的 JsonToString 方法

自定义 JsonToString 序列化方法


//'
Jsontostring代码 
function JsonToString(o) {  
  var arr = []; 
  var fmt = function(s) { 
    if (typeof s == 'object' && s != null) return JsonToStr(s); 
    return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; 
  } 
  for (var i in o) 
     arr.push("'" + i + "':" + fmt(o[i])); 
  return '{' + arr.join(',') + '}'; 
} 

这种实现方式在实际使用中效果很好。

此外,如果希望避免将 JSON 中的数字类型也进行字符串化处理,可以对代码进行如下调整:将 return /^(string|number)$/.test(typeof s) ? '"' + s + '"' : s; 修改为 return /^(string)$/.test(typeof s) ? '"' + s + '"' : s;。这实际上只是忽略了对 number 类型的特殊处理。

处理数字类型与复杂对象的序列化


function O2String(O) {
//return JSON.stringify(jsonobj); 
var S = [];
var J = "";
if (Object.prototype.toString.apply(O) === '[object Array]') {
  for (var i = 0; i < O.length; i++)
    S.push(O2String(O[i]));
  J = '[' + S.join(',') + ']';
}
else if (Object.prototype.toString.apply(O) === '[object Date]') {
  J = "new Date(" + O.getTime() + ")";
}
else if (Object.prototype.toString.apply(O) === '[object RegExp]' || Object.prototype.toString.apply(O) === '[object Function]') {
  J = O.toString();
}
else if (Object.prototype.toString.apply(O) === '[object Object]') {
  for (var i in O) {
    O[i] = typeof (O[i]) == 'string' ? '"' + O[i] + '"' : (typeof (O[i]) === 'object' ? O2String(O[i]) : O[i]);
    S.push('"' + i + '":' + O[i]);
  }
  J = '{' + S.join(',') + '}';
}
return J;
}; 

原生 JSON.stringify 方法及兼容性说明

JSON.stringify(jsonobj)

使用 JSON.stringify(jsonobj) 是最简便的方法,但存在浏览器兼容性问题。该方法仅适用于 IE8 及以上版本、Chrome 1 及以上版本以及 Firefox 3 及以上版本。

以上就是小编为大家带来的关于 JavaScript 中 JSON 对象与字符串相互转换的完整内容,希望对大家有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章