JavaScript中解析JSON数据的三种方法


Posted in Javascript onJuly 03, 2015

概述

现在JSON格式在web开发中越来越受重视,特别是在使用ajax开发项目的过程中,经常需要将json格式的字符串返回到前端,前端解析成JS对象(JSON )。
ECMA-262(E3)中没有将JSON概念写到标准中,还好在 ECMA-262(E5)中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。
解析JSON数据的三种方法

eval()方法

解析JSON数据的最常用方法是使用javascript的eval()方法,代码如下:

function toJson(str){

 var json = eval('(' + str + ')');

 return json;

}

该方法存在性能和安全方面的问题,不建议使用。
new Function方法
function toJson(str){

 var json = (new Function("return " + str))();

 return json;

}

JSON.parse()方法
这种方法只支持IE8/Firefox3.5+/Chrome4/Safari4/Opera10 以上版本,这些浏览器都已经接近W3C标准,默认实现了toJSON方法。
function toJson(str){

 return JSON.parse(str);

}

json2.js会在浏览器原生支持JSON.parse的时候选用原生版本,而且它跟ES5是API兼容的。在ES5还没完全普及的现状下,John Resig大神推荐用json2.js主要是为了现在就能用跟ES5兼容的API,日后能平滑过渡到ES5——只要去掉一个import就换过来了。
Javascript 相关文章推荐
PHP 与 js的通信(via ajax,json)
Nov 16 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
Jan 23 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
Dec 30 Javascript
vue-router 起步步骤详解
Mar 26 Javascript
jquery实现动态改变css样式的方法分析
May 27 jQuery
一张Web前端的思维导图分享
Jul 03 #Javascript
JavaScript中的对象与JSON
Jul 03 #Javascript
javascript生成大小写字母
Jul 03 #Javascript
jQuery切换所有复选框选中状态的方法
Jul 02 #Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 #Javascript
javascript 闭包详解
Jul 02 #Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 #Javascript
You might like
终于听上了直流胆调频
2021/03/02 无线电
模拟xcopy的函数
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php 问卷调查结果统计
2015/10/08 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
实例讲解php实现多线程
2019/01/27 PHP
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
javascript实现日历效果
2019/06/17 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Django异步任务线程池实现原理
2019/12/17 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Python sep参数使用方法详解
2020/02/12 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
学生自我鉴定模板
2013/12/30 职场文书
实习生自我评价
2014/01/18 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers