紫外線強度查詢App抓虫記@Ted好玩自學工坊
Ted Lee
Jul. 17, 2017
Line:ted2016.kpvs
Email:Lct4246@gmail.com
Blog(泰布布):http://lct4246.blogspot.tw/
URL(Ted's Bu Bu):https://sites.google.com/site/lct4246/
FB(Ted's BuBu):https://www.facebook.com/ted.lee.10420321
[1]
本文將以手把手的方式帶領讀者破解《紫外線強度查詢》[2]一文的抓虫奇幻之旅!
2.比对:原著上伝的時間為2015年6月8日,而筆者測試的時間為2017年7月16日。隨後筆者詢問原著阿吉老師(曾吉弘),他表示此範例發表後陸續在課堂上教學時皆能正常執行!故應該研判可能肇因為新舊版程式執行环境的相容性(compatibility)、資料格式(data format)有改或API呼叫方式有異动…。
而剩下的程式則依各縣市名稱而將每筆資料切出SiteName、UVI、PublishAgency、County、WGS84Lon、WGS84Lat、PublishTime七個欄位值──編譯程式(compilers)的專業術語稱為标記(tokens)。
- 現象:下載該文文末的getUV_v2.aia安裝後執行時發生如图1的錯誤!
图1:getUV_v2.aia執行錯誤畫面。
- 錯誤分析:
图2:錯誤訊息指出List的索引值異常。
图3:原著上伝的日期。
- 解方探索:稍微讀取原app的積木程式後,讀者不難發現,原著將中央氣象局釋出的34筆全省各縣市紫外線開放資料(open data)的JSON格式檔(图4)以App Inventor(文後皆以AI2簡稱之)的剖析程式(parser)將之讀入json變數中(图5)。
图4:中央氣象局釋出的34筆全省各縣市紫外線開放資料的JSON格式檔。
图5:將中央氣象局的全省各縣市紫外線資料讀入json變數之中。
所以,我們將此json變數印出在畫面上(图6),並將原中央氣象局的JSON資料丟號到線上版的JSON剖析程式对照之(图7)。
图6:在app中將json變數印出。
图7:图4的JSON資料之視覺化呈現。
一比較图6及图7後,眼尖的讀者應該赫然發現了大白的弟弟小白(真「像」大白):欄位名稱順序不一樣!
图6:County、PublishAgency、PublishTime、SiteName、UVI、WGS84Lat、WGS84Lon
图7:SiteName、UVI、PublishAgency、County、WGS84Lon、WGS84Lat、PublishTime
而且,图6是照英文字母順序由小到大排序(sorted)的!
- 結論:最後,我們將原始程式的經緯度取出標記的欄位順序調整如图8所示即大功告成,修改後的程式為getUV_V3_TedLee_07172017.aia。此外,請留意JSON、C、Java、Android…類似陣列結構的東東都是從0起跳,但這個AI2是從1喔!
图8:取經緯度時切割標記的欄位順序調整。
- 高手必練1:將图8改為欄位順序不固定時仍可順利抓到正確的欄位值。
- 高手必練2:选完縣市後立即念出該縣市的紫外線指數。
参考資料:
- 六種授權條款。
- [App Inventor 教學] 取得中央氣象局即時紫外線強度資料,CAVEDU教育团隊技術部落格,曾吉弘。
1 則留言:
你好Ted大:
您的aia檔案無法使用!
張貼留言