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 相关文章推荐
基于JavaScript 类的使用详解
May 07 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
Sep 22 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
每天一篇javascript学习小结(Function对象)
Nov 16 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
基于vue开发的在线付费课程应用过程
Jan 25 Javascript
Electron-vue脚手架改造vue项目的方法
Oct 22 Javascript
Vue CL3 配置路径别名详解
May 30 Javascript
JS数组方法concat()用法实例分析
Jan 18 Javascript
Js视频播放器插件Video.js使用方法详解
Feb 04 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 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
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
JS简单实现元素复制示例附图
2013/11/19 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python三元运算符实现方法
2013/12/17 Python
python中zip和unzip数据的方法
2015/05/27 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
python3实现名片管理系统
2020/11/29 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Python 必须了解的5种高级特征
2020/09/10 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
车队司机自我鉴定
2014/03/02 职场文书
生态养殖创业计划书
2014/05/06 职场文书
党员承诺践诺书
2014/05/20 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android