我正在尝试使用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=霞云岭
答案 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)