Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

JSON对象在低版本IE上的兼容实现

  从IE8开始,浏览器就在全局作用域中内置了JSON对象。在此之前的浏览器版本要实现相关的功能都需要手动实现,parse方法可以通过eval模拟(存在安全性问题),stringify也可以用个简单的递归解决。但是JSON对象并没那么简单,这些方法还有更多参数。
  其实网络上可以找到很多相关的实现,但我发现它们都存在问题。比如parse方法只用几行代码解决,完全没有考虑安全性问题。而stringify方法只是把JavaScript对象转换成JSON兼容的字符串而已,很多细节处理上都存在很多问题。我们需要一个符合标准的JSON对象在低版本IE上的兼容实现,至少我希望它的执行结果和现代浏览器相同。
  stringify方法有3个参数,parse方法有2个参数,虽然后面的参数用的比较少,但确实存在。我们也应该实现这些接口,以免其它程序在调用时出错。下面是我按照ES5来实现的一个JSON对象,代码比较长这里就不直接贴出来了,已放到Github上:
    https://github.com/YanagiEiichi/JSON.js
  下面是一个使用的示例,这里用IE11的IE5模式测试:
<script src="http://www.web-tinker.com/files/JSON.js"></script>
<script>
var data={
  a:1,c:[2,3],d:{
    e:"\r\n\t\b\x1F",
    f:0.618
  }
};
var json=JSON.stringify(data,null,2);
console.log(json);
</script>

  在其它浏览器上也可以得到同样的结果

  不过这个程序是刚写出来的,难免有一些BUG。我自己会先用,BUG出现的话逐个击破!
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^