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 相关文章推荐
input 输入框内的输入事件详细分析
Mar 17 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
Nov 04 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
Jan 25 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 Javascript
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
PHP 远程关机实现代码
2009/11/10 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python中使用logging模块打印log日志详解
2015/04/05 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
python rsa 加密解密
2017/03/20 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
党员的自我评价范文
2014/01/02 职场文书
初中校园之声广播稿
2014/01/15 职场文书
党日活动总结
2014/05/07 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
大学军训决心书
2015/02/05 职场文书
八一建军节慰问信
2015/02/14 职场文书