如何在实时代码中解析Json?

时间:2015-05-05 12:57:46

标签: arrays json livecode

我正在尝试使用http://www.weather.com.cn

提供的API制作天气应用

我的筹码中有三个元素," weatherdata"字段," city"字段和按钮。我们的想法是,桌面中保存了一个" cities.txt"文件,其中存储了城市名称及其对应的与API相同的代码。像这样:

101010100=Beijing
101010300=Chaoyang
101010400=Shuangyi
101010500=Huairou
101010600=Tongzhou
101010700=Changping
101010800=Yanqing

API是一个链接: http://m.weather.com.cn/data/(city code.html)例如,如果我想要Beijng的天气信息,链接将如下所示:
http://m.weather.com.cn/data/101110101.html

进入链接时,它将以JSON格式提供天气数据,如:

{"weatherinfo":{"city":"西安","city_en":"xian","date_y":"2014年3月4日","date":"","week":"星期二","fchh":"11","cityid":"101110101","temp1":"13℃~3℃"...}

我希望我的应用程序从中收集信息,只显示相应字段中的特定信息。

基本上,我想要的是当我在城市字段中键入北京并单击按钮时,应用程序会将(city code.html)部分替换为相应的城市代码形式" cities.txt"。然后是" weatherdata"字段将以我们可以阅读的格式显示API提供的信息。

到目前为止,我已将EasyJSON复制到我的StackScript中。我的按钮代码如下所示:

on mouseUp
  put the text of fld "city" into tCityName
  put specialFolderPath("desktop") & "/cities.txt" into tFilePath
  put textDecode(tCityList,"UTF8") into tCityList 
  put lineOffset("=" & tCityName & cr,tCityList & cr) into tFoundLine
  set the itemDelimiter to "="
  put item 1 of line tFoundLine of tCityList into tCityCode
  put "http://m.weather.com.cn/data/" & tCityCode & ".html" into tURL
  put URL tURL into tRawJSON
  put textDecode(tRawJSON,"UTF8") into fld "weatherdata"
end mouseUp

然而,它没有用,除了天气数据领域出现了这个:

<html>
<head>
</head>
<body>
<script type="text/javascript">
window.onload = function() {
window.open("/","_self");
}; 
</script> 
<!-- START WRating v1.0 -->
<script type="text/javascript" src="http://c.wrating.com/a1.js">
</script>
<script type="text/javascript">
var vjAcc="860010-2151010100";
var wrUrl="http://c.wrating.com/";
vjTrack("");
</script>
<noscript><img src="http://c.wrating.com/a.gif?a=&c=860010-2151010100"width="1" height="1"/>
</noscript>
<!-- END WRating v1.0 -->
</body>
</html>

我真的很困惑,不知道如何修复它,有人可以请帮帮我吗?

Here is my application

1 个答案:

答案 0 :(得分:0)

这看起来像是一个暂时的故障。如果我运行以下脚本

on mouseUp
     put empty
     put url "http://m.weather.com.cn/data/101110101.html" into myData
     put the result into rslt
     put rslt & cr & myData
end mouseUp

我在消息框中获取了json数据,可以使用EasyJSON进行解析。只有一次我在结果中得到HTML代码和/或错误代码。如果发生这种情况,请在几分钟后再试一次。