2015-05-05 1 views
1

Я пытаюсь создать приложение погоды с использованием API, предоставляемого http://www.weather.com.cnКак я могу разобрать Json в livecode?

У меня есть три элемента в моем стеке, поле "weatherdata", поле "city" и кнопка. Идея заключается в том, что файл «cities.txt», сохраненный на рабочем столе, сохранил название города с его соответствующим кодом, который идентичен API. Что-то вроде этого:

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

АНИ является ссылка: 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℃"...} 

И я хочу, чтобы мое приложение, чтобы собрать информацию от того, появляется только конкретная информация в соответствующеге ng.

В принципе, я хочу, когда я нахожу Пекин в поле города и нажимаю кнопку, приложение заменит часть (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.

ответ

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 и/или код ошибки в результате. Если это произойдет, попробуйте еще раз через несколько минут.