千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > JS对象转字符串的几种方法

JS对象转字符串的几种方法

来源:千锋教育
发布人:xqq
时间: 2023-11-23 00:03:12 1700668992

一、JSON.stringify方法

JSON.stringify方法是将一个javascript对象或值转换成为一个 JSON字符串。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = JSON.stringify(obj);
  console.log(str);

执行结果为:


  {"name":"Tom","age":18,"grade":{"math":90,"english":95},"hobbies":["reading","music"]}

json字符串还可以通过JSON.parse方法转换成js对象

代码如下:


  var obj = JSON.parse(str);
  console.log(obj);

执行结果为:


  {name: "Tom", age: 18, grade: {…}, hobbies: Array(2)}

二、Function方法

Function是js中的一个对象,它有一个toSource方法,可以把一个Function对象转换成js代码。如果把对象通过toSource方法转为代码,并去掉function(...)(){...}里的function和(),就可以得到这个对象的代码形式。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = (function(){return this;}).call(obj).toSource();
  console.log(str);

执行结果为:


  ({name:"Tom",age:18,grade:{math:90,english:95},hobbies:["reading","music"]})

三、eval方法

eval方法可以执行一段字符串形式的js代码,把一个js对象转换成一个可执行的js字符串,所以可以用eval方法直接把一个对象转换成一个字符串。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = eval('(' + JSON.stringify(obj) + ')');
  console.log(str);

执行结果为:


  {name: "Tom", age: 18, grade: {…}, hobbies: Array(2)}

四、toString方法

toString方法是Object对象的一个原型方法,可以将一个对象转换成字符串。但是这个方法只能将一个对象转换成"[object Object]"这种基本形式的字符串。

我们可以通过重写Object对象的toString方法来实现对象转字符串。

使用方法如下:


  Object.prototype.toString = function(){
    return JSON.stringify(this);
  }
  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  console.log(obj.toString());

执行结果为:


  {"name":"Tom","age":18,"grade":{"math":90,"english":95},"hobbies":["reading","music"]}

五、自定义方法

我们也可以通过自定义实现将一个js对象转换成字符串。

示例代码如下:


  function obj2str(obj, len){
    var ndeep = len || 1;
    var gap = ''; 
    var indent = ''; 
    var i = 0; 
    for(i = 0; i < ndeep; i++)
    {
      indent += ' ';
    }
    gap = ndeep > 1 ? '\n' : '';
    if(typeof obj === 'object')
    { 
      var str = '';
      if(obj.constructor === Array)
      { 
        for(i = 0; i < obj.length; i++)
        {
          str += gap + indent + obj2str(obj[i], ndeep + 1) + ', ';
        }
        return '[' + str.slice(0, -2) + '\n' + indent + ']';
      }
      else
      {
        for(var prop in obj)
        {
          str += gap + indent + '"' + prop + '": ';
          if(typeof obj[prop] === 'object')
          {
            str += obj2str(obj[prop], ndeep + 1) + ', ';
          }
          else if(typeof obj[prop] === 'function')
          {
            str += 'undefined' + ', ';
          }
          else
          {
            str += '"' + obj[prop] + '", ';
          }
        }
        return '{' + str.slice(0, -2) + '\n' + indent + '}';
      }
    } 
    else
    { 
      if(typeof obj === 'string')
      {
        obj = '"' + obj + '"';
      }
      return String(obj);
    }
  }

  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };

  var str = obj2str(obj);
  console.log(str);

执行结果为:


  {
   "name": "Tom", 
   "age": "18", 
   "grade": {
    "math": "90", 
    "english": "95"
   }, 
   "hobbies": [
    "reading", 
    "music"
   ]
  }

六、总结

以上是JS对象转字符串的几种方法,可以根据实际需要进行选择。需要注意的是,Function和eval方法存在安全问题,建议不要在生产环境中使用。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT