許多人都喜歡研究 App Inventor 2 中的專題:「來去台北住一晚」,因為其中使用到公開資料與 json 解析。不過因為公開資料都是由特訂單位來發佈,也就是資料來源必須依靠他人,一但維護單位的資料結構、欄位與是來源位址有變,也就會影響到 App 的操作。開發者要時時針對來源內容進行檢查,並進行適當的修正。
會這樣開場也就是告訴讀者,來去台北住一晚的資料來源不見了。唉 …
公開資料來源修改
原來公開資料的網站 http://data.taipei.gov.tw 不見了,所有的資料來源都將由 http://data.taipei 來提供。其中這個專題原來所提供的資料來源也不再提供,如果要使用該專題來進行練習的同學,可以更新資料來源:http://www.e-happy.com.tw/api/hoteldata.json,其更改拼塊如下:
如此即可使用原來的內容進行練習。
使用新的公開資料來源:臺北市臺北旅遊網-住宿資料
我們試著找尋在 http://data.taipei 中有沒有類似的資料來源,其中以「臺北市臺北旅遊網-住宿資料」應該最為接近,所以這裡將以這個資料進行專題的修改。
http://data.taipei/opendata/datalist/datasetMeta?oid=58093ba6-4c98-4148-b27a-50ad97d7afca
在這裡可以看到這個 API 存取的網址
http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=6f4e0b9b-8cb1-4b1d-a5c4-febd90f62469
原專題修改方式如下:
1. 先將資料來源設為新的公開資料來源:
2. 接著把取得的值代入 JsonData 的清單,不過目前的資料來源比較複雜之下,所有的資料以 json 分析是放置在 root->result->results 之下,所以以鍵值對的搜尋拼塊如下:
3. 接著我們要製作分區列表,如下圖最重要的是要用「address」在清單中找尋每一個飯店的地址,不過在實作時,我們發現其中有一筆資料並沒有地址的資料,會造成程式的錯誤。所以這裡在擷取地址的動作前要加一個判斷,當資料不為 null 時才進行字串的擷取。
4. 接著要製作分區店數的計算,一樣的因為其中有一筆資料並沒有地址的資料,會造成程式的錯誤。所以也要加一個判斷,當資料不為 null 時才進行計算。
如此即可完成專題的修改,以上提供讀者參考。
相關閱讀
App Inventor 2專題特訓班(中文介面第二版)
http://www.e-happy.com.tw/indexbookshow.asp?bid=275