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+")");//”呢? 原因在于: ...
随机推荐
- 你们信不信一句Console.WriteLine就能让你的控制台程序失去响应
好久没更新博客了,今天是扒衣见君节,难得闲下来就来说说一个最近有趣的发现吧. 首先废话不多说,直接上代码吧 class Program { static void Main(string[] args ...
- ongl(示例3-6 多值类型的数据处理)
使用ognl 实现多值处理,处理的值比较多,如数组,集合等类型的数据 //实体类省略 //创建action,其中包括两个成员变量 分别是两个double,string类型的数组 package cn. ...
- hbase-site.xml中HBASE_CLASSPATH 的设置
http://www.dataguru.cn/thread-95064-1-1.html
- ReactNative新手学习之路07ListView_ renderHeader使用StaticContainer
react native新手学习之路07ListView_ renderHeader使用StaticContainer 1.某些特殊场景需要用ScrollView滚动和ListView配合但是不幸运的 ...
- [网络安全] [视频分享]KaLi Linux基础培训2016 最新的哦【福吧资源网】
最新的教程同时针对kali linux2016最新版本的多个问题解决办法还有一些实例利用. 下载地址:http://www.fu83.cn/thread-310-1-1.html
- 如何动态在文档中加入<script></script>写入大段js?
<script language="javascript">var script = document.createElement("script" ...
- jquery更改输入框type为密码框password
很蛋疼的一个问题: <input type="text" id="e1" value="123" /> 用juqery将文本框变 ...
- 怎么在Microsoft Project中冻结列
在用Project排项目计划的时候如果在Gantt图中列比较多,左右滚动的时候就会经想像如果能想Excel一样冻结某些列就方便多了,其实在Project中虽然没有冻结列的功能,但通过一些变通方法还是可 ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- sqlserver 游标
DECLARE ChangeInvCodeCursor CURSOR FOR SELECT A.name AS tablecolumn,C.name AS tablename FROM sys.col ...