javascript parseJSON
解析json:
前台和后台做ajax交互,后台返回的json字符串,我之前都是通过eval来解析,后来慢慢的知道eval这货是魔鬼,eval要尽量避免,是出于安全考虑,因为eval过于强大,他可以把string串作为代码执行。如果控制不好就会造成安全漏洞。
所以ECMA推出了JSON.parse,通过这个名字大概可以看出这货是用来解析json的,JSON.parse详细介绍请参考这个地址:http://technet.microsoft.com/zh-cn/sysinternals/cc836466%28en-us,VS.85%29.aspx,通过API可以看到JSON.parse在IE6,7下是不兼容的。
解决兼容:
刚刚提到了JSON.parse在IE6,7下是不兼容,解决办法如下:
解决办法1:可以通过引入json2.js一个文件,json2.js下载及插件详细介绍请参考这个地址:http://www.cnblogs.com/youring2/archive/2013/03/01/2938850.html。
解决办法2:众所周知jQueryAPI里有一个parseJSON方法,parseJSON也是用来解析json字符串的,具体的我就不多做介绍了,如有没见过的同学可以去看一下jQueryAPI,我去看了一下parseJSON源码,看了之后借鉴parseJSON源码,写了一个解析json函数,先看一下运行结果吧:
IE7下妥妥的,由于我这里没有IE6,有IE6的同学可以自己去测试,下面给给大家上代码:
var parseJSON = function(data){
var rValidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rValidchars = /^[\],:{}\s]*$/,
rValidbraces = /(?:^|:|,)(?:\s*\[)+/g,
rValidescape = rValidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
if(window.JSON && window.JSON.parse){
return window.JSON.parse(data);
}
if ( rValidchars.test( data.replace( rValidescape, '@' )
.replace( rValidtokens, ']' )
.replace( rValidbraces, '')) ) {
return (new Function( 'return ' + data ))();
}
}
var str = '{"name":"carl","age":"24","sex":"man"}';
var obj = parseJSON(str);
alert(obj.name);
如果什么不对的地方,欢迎大家积极拍砖指导!
javascript parseJSON的更多相关文章
- easyUi 的form和validate组件
以下代码不能运行,只是我在学习过程中记录的笔记,但代码可以用!!! 可以按照需要截取. <%@ page language="java" contentType=" ...
- javascript json字符串与对象相互转换
在实际项目中,经常遇到字符格式的问题,记下来以便日后方便查看.用到两个函数:JSON.stringify() 和 JSON.parse(). 使用ajax向后台请求数据,后台给前端返回数据,明明后端脚 ...
- Javascript数值转换(string,int,json)
数值: 在JavaScript中,数值转换一般有三种方式: 一.Number(param)函数:param可以用于任何数据类型 1.1 param是Boolean值,true和false分别转换为1和 ...
- [Javascript] 前端随笔
做一个小功能时使用到的一点技术点记录下来: 1.在js中使用定时器: 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTime ...
- 前端编码规范之JavaScript
上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...
- $.parseJson 在 firefox 下返回 null 的问题
最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- javaScript 将json字符串转换为json对象的方法解析
JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
随机推荐
- [django]l利用xlrd实现xls文件导入数据
代码: #coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.sett ...
- [转]ASP.NET Core 之 Identity 入门(二)
本文转自:http://www.cnblogs.com/savorboard/p/aspnetcore-identity2.html 前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以 ...
- ZBrush中该如何调节多个SubTool
我们学习了人体的基本雕刻,了解了人体结构.比例.骨骼.肌肉对于人物模型雕刻的重要性.本节课对ZBrush中的"Transpose Master"功能进行讲解,这个插件是ZBrush ...
- Leetcode: plus one
June 22, 2015 Given a number represented as an array of digits, plus one to the number. Leetcode: pl ...
- FineUI小技巧(7)多表头表格导出
前言 之前我们曾写过一篇文章 FineUI小技巧(3)表格导出与文件下载,对于在 FineUI 中导出表格数据进行了详细描述.今天我们要更进一步,介绍下如何导出多表头表格. 多表头表格的标签定义 在 ...
- 从一个简单的ASP.NET 5站点开启.NET跨平台之旅
在经历了阿里云上“黑色1秒”的空欢喜之后,我们“被迫”考虑实现.NET的跨平台,将Web服务器由Windows换成Linux.而这种“被迫”在一个存在已久的愿望下,变得水到渠成.这个愿望就是 —— “ ...
- 【转】js实现复制到剪贴板功能,兼容所有浏览器
两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...
- ECharts学习(1)--简单图表的绘制
1.获取ECharts 官网 下载:http://echarts.baidu.com/download.html 2.在html页面中引入ECharts文件 <!DOCTYPE html> ...
- C/C++的编译过程
预处理(Preprocess). 使用Preprocessor Directives将一些代码替换成另一些代码. 例如将include替换成它指向的文件包含的代码. 编译成目标文件(Compiatio ...
- UISearchBar控件-让我们来搞定!(转)
转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101dfg8.html 最近用到搜索功能.于是,经过不断的研究,终于,有点懂了. 那就来总结一下吧,好 ...