Windows Mobile 6.5 Widget - 读取JSON数据-转
原文:http://www.shangducms.com/default.aspx
JSON是什么?我想JSON可能对很多人来说都不陌生了吧,前面我们说到可以用最原始的方法读取XML,又可以在一切都规范的情况下读取XML,那么我们有没有更好的数据读取方式呢,当然有,就是JSON,说实话我原来没怎么去接触JSON,不过最近看了一下JSON的东西,觉得JSON真是太简单了。真是不用不知道,一用吓一跳,没想到还有这么轻量的东西。
多的不说了,我们先看一下JavaScript怎么读取JSON数据的。
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
我们可以看到上面的代码,是不是感觉有点乱?嗯,是有一点,不过其实当你了解之后就会觉得其实很整齐了。我们现在这里可以读取randomURI这个数据,怎么读呢,看看下面的代码。
myJSONObject.bindings[2].method
这个代码是不是很简单?其中,ircEvent可以看做字段,PRIVMSG可以看做值。其实JSON是基于map实现的,所以也是键值对应的了。这样看上去是不是就不那么乱了?OK,既然我们了解了JSON的基本原理后,一切都好办了,既然我们有一个这么好的数据源,我们就可以轻松的读取远程数据了,其实代码很好写,我们一样是获取远程的responseText,然后转换成JSON数据就可以了,示例代码如下。
function LoadDone(url)
{
if (req.readyState == 4)
{
if (req.status == 200)
{
response = req.responseText;
var json = eval('(' + response + ')');
//{"weather:{"city":"北京"}......"}
var city = json.weather.city;
//插入我们的json数据
$("#city").append(city);
$("#load").hide("slow");
}
else
{
//connect failure
}
return response;
}
}
上面的代码是基于这篇文章写的,这篇文章和读取JSON差不多,也是一开始读取远程数据,获取response对象。最开始是获取responseText,上一篇文章是responseXML,这里我们还是读取responseText,然后转换为JSON对象,这里就要注意转换的方式,是不能够直接用responseText的,直接用是会发生错误的。
OK,既然我们远程可以读取JSON数据了,我们也可以使用现有的很多网络提供的Service做很多事情了,比如做一些IP查询啊,股票查询,天气查询的事情了,比如我这里,就简单的做了一个小插件。:),还在Alpha阶段。
所以说读取远程数据在Windows Mobile 6.5 Widget中是非常重要的,这里我说了3种读取远程数据的方式,都是非常行之有效的,所以有了远程数据,再加上HTML和JavaScript,就具有非常强的可扩展性了,可是在开发和维护上,暂时还没有很好的解决方案,不过我觉得这么轻量的东西,不需要搞那么复杂。