解析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的更多相关文章

  1. easyUi 的form和validate组件

    以下代码不能运行,只是我在学习过程中记录的笔记,但代码可以用!!! 可以按照需要截取. <%@ page language="java" contentType=" ...

  2. javascript json字符串与对象相互转换

    在实际项目中,经常遇到字符格式的问题,记下来以便日后方便查看.用到两个函数:JSON.stringify() 和 JSON.parse(). 使用ajax向后台请求数据,后台给前端返回数据,明明后端脚 ...

  3. Javascript数值转换(string,int,json)

    数值: 在JavaScript中,数值转换一般有三种方式: 一.Number(param)函数:param可以用于任何数据类型 1.1 param是Boolean值,true和false分别转换为1和 ...

  4. [Javascript] 前端随笔

    做一个小功能时使用到的一点技术点记录下来: 1.在js中使用定时器: 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTime ...

  5. 前端编码规范之JavaScript

    上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...

  6. $.parseJson 在 firefox 下返回 null 的问题

    最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...

  7. JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  8. javaScript 将json字符串转换为json对象的方法解析

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...

  9. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

随机推荐

  1. Linux 下.desktop 桌面程序图标文件编写方式

    [Desktop Entry] //每个desktop文件都以这个标签开始,说明这是一个Desktop Entry文件 Version = 1.0 //标明Desktop Entry的版本(可选) N ...

  2. WPF系列-CheckBox

    自定义样式1 效果: 代码: <!-- CheckBox的样式 --> <Style TargetType="{x:Type CheckBox}"> < ...

  3. 数据分析:.Net程序员该如何选择?

    上文我介绍了用.Net实现的拉勾爬虫,可全站采集,其中.Net和C#(不区分)的数据爬取开始的早,全国主要城市都有一定数量的分布,加上有了近期其他相似技术类别的数据进行横向比较,可以得到比较合理的推测 ...

  4. Libevent的IO复用技术和定时事件原理

    Libevent 是一个用C语言编写的.轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大:源代码相当精炼.易 ...

  5. UVA11021 Tribles[离散概率 DP]

    UVA - 11021 Tribles GRAVITATION, n. “The tendency of all bodies to approach one another with a stren ...

  6. java线程池(newSingleThreadExecutor())小应用

    创建单个线程,用来操作一个无界的队列任务,不会使用额外的线程.如果线程崩溃会重新创建一个,直到任务完成. 代码: import java.util.concurrent.ExecutorService ...

  7. XML介绍

    XML [TOC] 1.XML简介 XML是Extend Markup Langue可扩展标签语言,标签由开发着自己定义 作用是: 1.描述带关系的数据(作为软件的配置文件):包含与被包含的关系 2. ...

  8. Andorid 反编译App

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23564065 开发的过程中,有时候可能会去使用别的app里面的图片,参考布局甚至 ...

  9. dpctl 工具使用

    一.在建立Mininet的时候,需要设置listenPort,这样可以在其它命令行里设置flow net = Mininet( topo=topo, listenPort=6634 ) 二.常见用法m ...

  10. QString, string, int, char* 之间相互转换

    这三种数据类型在实际运用中经常需要互相转换,那么这里小结下它们之间的转换方法: - Qstring & string Qt中封装的类十分强大,其成员函数数量之多比STD有过之而无不及,许多程序 ...