2018年5月15日 星期二

20180516 開放資料與 JSON

一、EXCEL 開放資料檔案格式練習

首先開啟 Android Studio,於右下角確認軟體版本。
開啟後會看到已安裝好的版本和未安裝好的版本,確認所需 API 版本安裝後,進行下一步驟。
此步驟確認 SDK 版本,如果需要了解詳細安裝情形,可勾選右下角方塊。
勾選後,會顯示詳細 SDK 安裝項目,可依需求加入安裝,完成後點選 OK 回到歡迎畫面。
確認軟體本版與欲使用專案使用的版本相同,好方便開發。在此選擇建立一個新的專案。
確認各個命名是否正確與選擇檔案欲存放位置。
確認欲開發的裝置平臺,在此選擇手機與平板。
因練習關係,在此選擇空白頁面作開發。
確定主要頁面名稱,完成後點選建置專案。
此處以「臺中市停車場座標位置」開放資料為例,到政府資料開放平臺取得 Excel 檔案。
於下載處選取下載好的 Excel 開放資料檔,檔案副檔名為 xlsx。
於左上角點選檔案。
另存新檔,檔案格式存成 CSV 檔案。
如有多個工作表,將會顯示以下提示視窗,因為 CSV 檔案無法存取多個工作表內容,因此處為練習用,所以點選確定。
回到 Android Studio,此時建置一個資料夾於專案內,名稱為 Assets。
使用預設路徑位置存放資料夾,完成後點選 Finish。
建立完成後,可查看並打開資料夾所在的目錄位置。
開啟 assets 資料夾。
將剛才透過 Excel 轉存的 CSV 檔案放置於此目錄下。
回到 Android Studio,開啟 java 檔案進行編輯,並填入必要的程式碼,以便讀取 CSV 檔案。
同上一步驟。

二、JSON 開放資料檔案格式練習-非同步工作

注意!此練習與前幾個步驟練習的 Android Studio 專案是同一份。來到 myjson.com 網站,此網站為 json 程式碼站暫存網站,可以進行 json 檔案的程式測試。完成程式碼編輯點選 Save 之後,將產生 json 程式碼的臨時網址。
複製臨時網址,於新頁面貼上前往臨時網址頁面,將看到剛才編寫好的 json 程式碼。
回到 Android Studio,於 AndroidManifest.xml 中加入網路權限。
建立一個新的 java 檔案。
名稱為 GetNetworkJson 繼承至 AsyncTask,完成後點選 OK。
建立新的 GetNetworkJson.java 檔案後,必須實作父類別未實作的方法。
選取欲實作的方法,完成後點選 OK。
於開頭處宣告所需變數。
將工作寫在 doInBackground 方法中。
於開頭處匯入所需 API 元件,使 doInBackground 方法內的物件都可以被正確的宣告及使用。
將與介面元件連接的方法寫在 onPostExecute 方法中,例如:TextView 元件欲顯示的內容,可透過 java 程式碼來設置。
開啟 activity_main.xml,建立一個 TextView 元件,以解決 java 檔案中紅線找不到元件的問題。
開啟 MainActivity.java 檔案,將已撰寫好的 GetNetworkJson.java 程式碼,於 onCreate 程式內執行。
執行後,即可顯示剛才在臨時網站中打好的 json 程式碼內容。

三、JSON 開放資料檔案格式練習-Volley

注意!此練習與前幾個步驟練習的 Android Studio 專案是同一份。於 build.gradle(Module: app) 加入 Volley 網路通訊所需的程式碼。
一樣要記得開啟網路權限,因為檔案是從網路下載下來的。
開啟 MainActivity.java,撰寫 getData 方法,使程式可以從網路抓取 json 檔案的內容資料。
於開頭處匯入所需 API 元件,使 getData 方法內的物件都可以被正確的宣告及使用。
建立第二個 TextView 元件。
在 MainActivity.java 檔案中匯入剛才建立的第二個 TextView 元件。
建立 parseJSON 方法,此方法負責解析 json 檔案的內容。
於開頭處匯入所需 API 元件,使 parseJSON 方法內的物件都可以被正確的宣告及使用。
於 getData 方法中加入 parseJSON 方法來解析 json 內容,並透過 parseJSON 方法中的監聽事件,讓 json 檔案內容可以被讀取。
於 onCreate 中引用剛才寫好的 getData 方法,將網址參數放入此方法中進行處理,即可於介面元件 TextView 中顯示整理過後的 json 內容。
執行結果如下。

四、手動實作 JSON 開放資料檔案格式-Volley

首先建置一個新的專案。
確認各個命名是否正確與選擇檔案欲存放位置。
確認欲開發的裝置平臺,在此選擇手機與平板。
在此選擇空白頁面做開發。
確定主要頁面名稱,完成後點選 Finish 建置專案。
開啟 activity_main.xml 刪除預設的 TextView。
建置 ListView 元件至視窗內。
於 AndroidManifest.xml 中加入網路權限。
於 build.gradle(Module: app) 加入 Volley 網路通訊所需的程式碼。
開啟 MainActivity.java 檔案,匯入剛才於 activity_main.xml 檔案中建立好的 ListView 元件。
同上一步驟,並宣告網址字串變數 url,以及使用方法 getData,因 getData 方法尚未建立,所以出現紅線提示,此方法將於接下來步驟建立。
撰寫 getData 方法,使程式可以從網路抓取 json 檔案的內容資料。注意!此次實作練習的 json 檔案的陣列階層較多,因此使用不同的物件來操作。
於開頭處匯入所需 API 元件,使 getData 方法內的物件都可以被正確的宣告及使用。
建立 parseJSON 方法,此方法負責解析 json 檔案的內容。
於開頭處匯入所需 API 元件,使 parseJSON 方法內的物件都可以被正確的宣告及使用。
執行後方法順利顯示清單列出的 json 檔案內容。