js中将字符串转换成json的三种方式


Posted in Javascript onJanuary 12, 2011

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

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

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

记得别忘了str两旁的小括号。
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 已实现了该方法,以下是部分资料:http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx https://developer.mozilla.org/en/Using_JSON_in_Firefox
使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
var str = '{name:"jack"}'; 
var obj = JSON.parse(str); // --> parse error

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。
另见:Chrome中JSON.parse的特殊实现
Javascript 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
Mar 02 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
微信小程序实现侧边栏分类
Oct 21 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
js实现简单的倒计时
Jan 28 Javascript
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
Jan 12 #Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 #Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 #Javascript
Script的加载方法小结
Jan 12 #Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 #Javascript
javascript smipleChart 简单图标类
Jan 12 #Javascript
javascript Window及document对象详细整理
Jan 12 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
Vue侦测相关api的实现方法
2019/05/22 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python生成n个元素的全组合方法
2018/11/13 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python  Django 母版和继承解析
2019/08/09 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
利用python实现逐步回归
2020/02/24 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
python实现自动打卡的示例代码
2020/10/10 Python
实习生体会的自我评价范文
2013/11/28 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
食品流通安全承诺书
2014/05/22 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript