博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串转换成json的三种方式
阅读量:5942 次
发布时间:2019-06-19

本文共 1013 字,大约阅读时间需要 3 分钟。

  hot3.png

使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象()。

ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。

1. eval方式解析,恐怕这是最早的解析方式了。如下:

function strToJson(str){        var json = eval('(' + str + ')');        return json;   }

记得别忘了str两旁的小括号。

为什么要加括号?

加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:

alert(eval("{}"); // return undefinedalert(eval("({})");// return object[Object]
2 . new Function形式,比较怪异哦。如下
:

function strToJson(str){       var json = (new Function("return " + str))();       return json;   }
3,使用全局的JSON对象,如下:

function strToJson(str){       return JSON.parse(str);   }

目前 IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法,以下是部分资料:

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

var str = '{name:"jack"}';   var obj = JSON.parse(str); // --> parse error

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

 另见:

转载于:https://my.oschina.net/i33/blog/85114

你可能感兴趣的文章
C语言运算符优先级相关问题
查看>>
MP4视频播放器代码
查看>>
Nginx 匹配 iphone Android 微信
查看>>
ldap
查看>>
Yum软件仓库配置
查看>>
linux 压缩与解压总结
查看>>
mysql脚本1064 - You have an error in your SQL syntax; check the manual
查看>>
nessus 本地扫描(一)
查看>>
linux服务器磁盘陈列
查看>>
python----tcp/ip http
查看>>
我的友情链接
查看>>
第一本docker书学习笔记1-3章
查看>>
一個典型僵尸網絡淺析
查看>>
vmware克隆Centos6.4虚拟机网卡无法启动问题
查看>>
dba学习
查看>>
asterisk配置
查看>>
GA操作步骤和技巧(二)——用户行为分析
查看>>
shell中while循环里使用ssh的注意事项
查看>>
SHELL获取计算机外网ip的几种写法
查看>>
博客正在搬迁中
查看>>