当前位置 : 主页 > 网页制作 > Dojo >

Dojo的内建JSON解析模块

来源:互联网 收集:自由互联 发布时间:2021-06-15
原文链接:http://www.sitepen.com/blog/2012/01/05/native-json-parsing-in-dojo/ 原作者:Kris Zyp Dojo1.7引入了一个新的模块:dojo/json。该模块与原有的dojo.fromJson和dojo.toJson函数的不同点在于,它基于Jav
原文链接: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函数。
网友评论