如何在livecode

时间:2015-04-28 13:12:13

标签: json livecode

我正在尝试使用LiveCode制作适用于iOS的天气应用程序,它将使用将提供Json格式信息的天气API。但我怎么能意识到呢?

例如,api将提供链接

http://m.weather.com.cn/data/101110101.html

(101110101是城市代码,可以用不同的代码替换来收集不同的天气信息)

如果您转到上面的链接,它将以json格式提供相应城市的天气信息。

我如何收集信息并输入相应的字段?并且因为天气api为不同的城市提供不同的代码,我怎样才能实现我可以在一个字段中放置城市名称然后单击一个按钮的功能,该应用程序将收集天气信息?

以下是您可以尝试的一些城市代码,尽管它们是中文的:D。城市的名称可以使用不同的语言,我只需要它就可以将名称翻译成相应的代码。

101010100=北京
101010200=海淀
101010300=朝阳
101010400=顺义
101010500=怀柔
101010600=通州
101010700=昌平
101010800=延庆
101010900=丰台
101011000=石景山
101011100=大兴
101011200=房山
101011300=密云
101011400=门头沟
101011500=平谷
101011600=八达岭
101011700=佛爷顶
101011800=汤河口
101011900=密云上甸子
101012000=斋堂
101012100=霞云岭

2 个答案:

答案 0 :(得分:1)

这适用于LiveCode 7或更高版本(在早期版本中,Unicode文本处理不同且不太健壮。)

我们假设您将城市代码保存在utf8文本文件cities.txt中。读入文本文件,并将其转换为UTF-16,LiveCode的本机文本编码。我已将文本文件存储在桌面上,但显然您可以将其存储在任何您想要的位置,只要您可以获取文件的路径。

在带有按钮的卡片上,文本字段" city"和fld" weatherdata",我在按钮中写下面的处理程序:

on mouseUp
   put the text of fld "city" into tCityName
   put specialFolderPath("desktop") & "/cities.txt" into tFilePath
   put URL ("binfile:" & tFilePath) into tCityList # read file as binary data
   put textDecode(tCityList,"UTF8") into tCityList # convert to UTF16
   put lineOffset("=" & tCityName & cr,tCityList & cr) into tFoundLine
   set the itemDelimiter to "="
   put item 1 of line tFoundLine of tCityList into tCityCode

   # now call the weather API
   put "http://m.weather.com.cn/data/" & tCityCode & ".html" into tURL
   put URL tURL into tRawJSON
   put textDecode(tRawJSON,"UTF8") into fld "weather data"
end mouseUp

现在剩下的就是解析JSON了。 LiveCode有几个JSON库可用。但这是一个不同的问题。

答案 1 :(得分:0)

正如Devin所提到的,有几个JSON库可用。事实上,如果您正在尝试使用LC 8,那么Peter Brett今天发布了一篇用LiveCode Bulder编写的文章here

EasyJSON是用LC脚本编写的,应该适用于大多数版本的LC。它可用here

我使用外部mergJSON,这是目前LiveCode最快的JSON解析器。它是双重许可的,可在GitHub上使用here,也可以从我的网站here

获取。

在所有情况下,您都需要将JSON解析为LiveCode数组,并且您需要显示的任何文本都需要textDecode,如Devin的示例所示。