背景:

js字符串转换为对象格式,一般都会想到JSON.parse(),但数据不是标准的 JSON 格式的时候会解析出错,这时候就可以使用eval() 函数、new Function()方法来转换。

常用3种将字符串string转为json对象 方法:

var str = '{"name":"小明","age":18}';var json = JSON.parse(str);//第一种
var json2 = eval("(" + str + ")");//第二种
var json3 = (new Function("return " + str))();//第三种

打印效果:

详细说明:

JSON.parse()

语法:

JSON.parse(text[, reviver]);//text:必需, 一个有效的 JSON 字符串。
//reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

解析前要确保你的数据是标准的 JSON 格式,否则会解析出错。

情况一:有的人可能会习惯写成对象形式的字符串,如:str = '{name:"小明",age:18}'; 结果使用JSON.parse()来转化会报错,因为使用JSON.parse需严格遵守JSON规范。

情况二:JSON.parse使用单引号来套双引号,如果反过来写呢,如:var str = "{'name':'小明', 'age':18}";(相信也不少人习惯用双引号套单引号) 结果使用JSON.parse()来转化也会报错

eval() 函数

定义和用法:

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

语法:

eval(string)
参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

eval()的返回值

eval()的返回值遵循以下规则:

1.如果eval()的参数不是字符串,那么eval()将直接返回参数。

2.如果eval()的参数是字符串,那么eval()将这个字符串解析成代码后进行执行,并返回最后一行代码执行的结果。

3.如果字符串无法解析成合法的代码,eval()将抛出SyntaxError错误

new Function()

这个特殊的new Function表面看起来很奇怪,但在实践中显得非常有用。

语法:

let func = new Function(arg1, arg2, ..., body);

历史原因,参数也可以以逗号分隔的列表的形式给出。

这三个意思相同:

new Function('a', 'b', 'return a + b'); // 基础语法
new Function('a,b', 'return a + b'); // 逗号分隔
new Function('a , b', 'return a + b'); // 逗号加空格分隔

使用new Function创建的函数,其[[Environment]]引用全局词法环境,而不是包含该函数的外部词法环境。因此,他们不能使用外层的变量。但这确实很好,因为它可以使我们免于错误。明确地传递参数在架构上是一种更好的方法,并且不会在使用minifiers时不会产生问题。

js字符串转换为对象格式的3种方法相关推荐

  1. javascript中将字符串转换为json格式的三种方法

    摘自:http://www.phpzixue.cn/detail1128.shtml javascript中将字符串转换为json格式的三种方法:  json在我们js的开发过程中经常会用到像在使用a ...

  2. php将字符串转换为json格式,js中将字符串转换为json格式的三种方法

    json在js的开发过程中经常会用到,像在使用ajax开发的项目过程中,经常需要将json格式的字符串返回到前端,前端解析成json对象. 下面为大家介绍下将字符串转换为json对象的三种常用的方法: ...

  3. js字符串转换为对象格式

    var str = '{"name":"小明","age":18}'; 将字符串转化json对象: var json = JSON.pars ...

  4. js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...

  5. 微信小程序之js 字符串转换成数字的三种方法, 取float型小数点后两位数的方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  6. js 字符串转换成数字的 三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  7. html把字符串转换成数字,js字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  8. 【小案例】字符串转换为数字数据类型的三种方法

    <script>var string="88.96"; var num=string*10; console.log(string,num,typeof num);&l ...

  9. JS 字符串转换成数字的三种方法

    方法主要有三种: 转换函数.强制类型转换.js变量弱类型转换 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对S ...

最新文章

  1. Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)
  2. Codeforces - 1176E - Cover it! - bfs
  3. taskctl控制容器之定时器个人理解
  4. 【嵌入式 C】广义互相关算法用FFT加速的C语言实现
  5. mysql 5.7.25 中文全文检索(多个字段联合索引)
  6. php 时间 增加天数,php实现当前时间加天数的方法
  7. Windows系统用户目录Users迁移教程
  8. 第一方数据,第二方数据,第三方数据:你了解多少?
  9. python进程/线程/协成
  10. vue-amap的使用
  11. 复旦的新衣再登Nature!穿在身上能为手机充电
  12. Neo4j之Cypher概述
  13. 使用python turtle库13行代码实现奥运五环
  14. 21年Android面经分享,大厂面试题汇总
  15. WiFi穿墙手册:解读天线、dbi、发射功率和无线信号的关系
  16. java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒
  17. 知行之桥堆内存及清理
  18. zabbix 添加监控主机和自定义模板
  19. Python 成绩统计
  20. java保存火车票信息_java抓取12306火车余票信息

热门文章

  1. Excel 已死,爬虫已凉,数据分析称王! 顺数据分析之势而为
  2. 精品搜索导航网站纯JS源码
  3. jQuery-slimScroll控制滚动条样式的插件
  4. 1、Python量化交易-开发环境与整体架构
  5. 新成就:阿里云 MVP(最有价值专家)
  6. ModelArts第二次培训
  7. 教你Vim编辑器,如何删除一行或者多行内容
  8. 新浪微博 头像上传 php,使用canvas实现仿新浪微博头像截取上传功能_javascript技巧...
  9. Oracle递归查询树形数据
  10. MySQL的安装与环境变量配置