您的位置:

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

一、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方法存在安全问题,建议不要在生产环境中使用。

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

2023-05-23
将Python对象转换为字符串的几种方法

2023-05-12
重学java笔记,java笔记总结

2022-11-23
字符串转map的几种方法

2023-05-20
前端js常用字符串处理实例(前端字符串常用方法)

本文目录一览: 1、《web前端笔记7》js字符—获取、查找、遍历、提取、替换方法总结 2、JS字符串截取常用方法 3、js字符串拆分? 4、js中字符串的常见方法 《web前端笔记7》js字符—获取

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
java笔记,大学java笔记

2022-11-28
Java字符串转对象的方法

2023-05-11
python方法笔记,python基础教程笔记

2022-11-20
java笔记,尚硅谷java笔记

2022-12-01
JS JSON对象转字符串深度剖析

2023-05-21
phpjson字符串转对象(php json转字符串)

本文目录一览: 1、php 怎么 字符串 转 json对象 2、JSON PHP中,Json字符串反序列化成对象/数组的方法 3、php如何返回json对象呢 4、PHP怎么把json字符串转为对象

2023-12-08
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
java转json串的几种方式,java json字符串转对

2022-11-22
Python中数字转换为字符串的几种方法

2023-05-10
python中的字符串处理方法(python 字符串处理函数

2022-11-15
java基础知识学习笔记一,Java基础笔记

2022-11-21
JS字符串转整数的全面探讨

2023-05-21
java学习笔记(java初学笔记)

2022-11-14