原作者: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函数。