Dojo的内建JSON解析模块

来源:互联网 发布:拍拍贷网络借贷平台 编辑:程序博客网 时间:2024/04/27 02:04
原文链接:http://www.sitepen.com/blog/2012/01/05/native-json-parsing-in-dojo/
原作者:Kris Zyp

Dojo1.7引入了一个新的模块:dojo/json。该模块与原有的dojo.fromJson和dojo.toJson函数的不同点在于,它基于JavaScript语言内建支持的JSON API。它还采用了内建的JSON解析与序列化功能(如果存在的话),因此在任何浏览器上都能达到最快的速度。

新的API用起来很简单,而且如果你用过json.org函数库或者浏览器内建函数的话,就会更容易上手。一旦加载了"dojo/json"模块并赋予变量JSON后,我们就能使用其中的parse和stringify函数了。例如要解析一个JSON字符串:
define(["dojo/json"], function(JSON){  var jsonStr = '{"name": "value"}';  var object = JSON.parse(jsonStr);  object.name -> "value";});
如果浏览器支持,在这个parse函数中就会使用内建的解析函数,否则的话就退化为Dojo自己的实现。

反过来,要将一个对象序列化为JSON字符串:
define(["dojo/json"], function(JSON){  var object = {"name": "value"};  var jsonStr = JSON.stringify(object);  jsonStr -> '{"name": "value"}'});
日期数据的序列化

新的JSON模块现在已能够正确地序列化日期数据。以前dojo.fromJson会将日期对象序列化为"{}",现在则会自动转成标准日期格式( UTC的ISO标准格式)。

内建函数的性能 - 保持轻量

新的JSON模块通过has()函数来决定是否采用内置的JSON功能。这不仅仅是一种功能检测,它还意味着当你需要针对特定浏览器打包时,对于最新的主流浏览器而言,该模块只有几个字节的大小,这对于移动应用是非常有价值的。

遗留函数dojo.fromJson和dojo.toJson还将在于Dojo base中继续存在一段时间,但出于性能以及与标准的一致性的考虑,推荐采用这个dojo/json包中的parse和stringify函数。