js字符串转换为对象格式的3种方法
背景:
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种方法相关推荐
- javascript中将字符串转换为json格式的三种方法
摘自:http://www.phpzixue.cn/detail1128.shtml javascript中将字符串转换为json格式的三种方法: json在我们js的开发过程中经常会用到像在使用a ...
- php将字符串转换为json格式,js中将字符串转换为json格式的三种方法
json在js的开发过程中经常会用到,像在使用ajax开发的项目过程中,经常需要将json格式的字符串返回到前端,前端解析成json对象. 下面为大家介绍下将字符串转换为json对象的三种常用的方法: ...
- js字符串转换为对象格式
var str = '{"name":"小明","age":18}'; 将字符串转化json对象: var json = JSON.pars ...
- js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法
js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...
- 微信小程序之js 字符串转换成数字的三种方法, 取float型小数点后两位数的方法
在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...
- js 字符串转换成数字的 三种方法
在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...
- html把字符串转换成数字,js字符串转换成数字的三种方法
在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...
- 【小案例】字符串转换为数字数据类型的三种方法
<script>var string="88.96"; var num=string*10; console.log(string,num,typeof num);&l ...
- JS 字符串转换成数字的三种方法
方法主要有三种: 转换函数.强制类型转换.js变量弱类型转换 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对S ...
最新文章
- Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)
- Codeforces - 1176E - Cover it! - bfs
- taskctl控制容器之定时器个人理解
- 【嵌入式 C】广义互相关算法用FFT加速的C语言实现
- mysql 5.7.25 中文全文检索(多个字段联合索引)
- php 时间 增加天数,php实现当前时间加天数的方法
- Windows系统用户目录Users迁移教程
- 第一方数据,第二方数据,第三方数据:你了解多少?
- python进程/线程/协成
- vue-amap的使用
- 复旦的新衣再登Nature!穿在身上能为手机充电
- Neo4j之Cypher概述
- 使用python turtle库13行代码实现奥运五环
- 21年Android面经分享,大厂面试题汇总
- WiFi穿墙手册:解读天线、dbi、发射功率和无线信号的关系
- java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒
- 知行之桥堆内存及清理
- zabbix 添加监控主机和自定义模板
- Python 成绩统计
- java保存火车票信息_java抓取12306火车余票信息