[ 開放資料part3 ] [android] 利用Volley在Android取得JSON字串(網路)
在開放資料part1、part2中所使用的方式為利用EXCEL以及臨時API網址,
那現在我們要來透過Volley,利用網址,來得到JSON字串囉
那現在就~開始囉!
六步驟發想
1.導入Volley
2.開啟網路權限
3.使用ListView來呈現
4.利用JsonObjectRequest類別來要求JSON資料
5. 以匿名類別Response.Listener/ErrorListener來進行監聽回應與錯誤
6.解析呈現方式
Step1.導入Volley(build.gradle-app)
volley是個輕量的HTTP Request類別庫,而volley類別庫適合處理通訊頻繁且資料量不大的傳輸作業。
將將~這樣就完成了~
在這邊呢我有調整過版面的位置以及顏色並且增加了Textview
大家有空練習的時候可以試試看改Json值的顏色喔~
那現在我們要來透過Volley,利用網址,來得到JSON字串囉
那現在就~開始囉!
六步驟發想
1.導入Volley
2.開啟網路權限
3.使用ListView來呈現
4.利用JsonObjectRequest類別來要求JSON資料
5. 以匿名類別Response.Listener/ErrorListener來進行監聽回應與錯誤
6.解析呈現方式
Step1.導入Volley(build.gradle-app)
volley是個輕量的HTTP Request類別庫,而volley類別庫適合處理通訊頻繁且資料量不大的傳輸作業。
implementation 'com.android.volley:volley:1.1.0'
(注意,舊版的gradle是使用 compile 'com.mcxiaoke.volley:library:1.1.0',所以在建專案的時候就要注意自己的版本喔)
Step2.開啟網路權限 (在AndroidManifest.xml中)<uses-permission android:name="android.permission.INTERNET"/>
Step3.建立ListView在activity_main.xml中加入ListView,並為他設立id“lv”(一開始將ListView直接丟進layout中,卻沒看到文字,不要緊張!為他設立id後就會出現了,因為這件事花了很多時間的自己....)Step4.要求JSON資料並進行監聽事件在這邊我們需要分成幾個步驟1.匯入 ListView lv 與JSON資料的網址protected ListView lv; String url = "http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=a880adf3-d574-430a-8e29-3192a41897a5";2.建立onCreate事件protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = findViewById(R.id.lv); getData(url); }3.建立getData方法private String getData(String urlString) { String result = ""; JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( urlString, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("回傳結果", "結果 = " + response.toString()); try { parseJSON(response); } catch (JSONException e) { e.printStackTrace(); }}}, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("回傳結果", "錯誤訊息:" + error.toString()); } } ); Volley.newRequestQueue(this).add(jsonObjectRequest); return result;}由於Velloy使用Queue(佇列)方式處理網路通訊,不須管它怎麼傳送、何時傳送,只要把工作加到Queue裡就行,當執行結束會自動通知匿名類別Response.Listener。到這邊是不是覺得很難緊張非常害怕呢~不要擔心,因為我們已經快完成了!接著就來進行解析吧~Step5.解析JSON資料在這邊我們要解析JSON資料來回傳到listview中,所以先想想要怎麼呈現在listview呢?在這邊我呈現的方式為_id:1 項次:1停車場名稱:xx停車場經度:xxxxx緯度:yyyyy好了~這樣就很清楚自己想要怎麼來分解了那接著我們就來看程式碼囉private void parseJSON(JSONObject jsonObject) throws JSONException { ArrayList<String> list = new ArrayList(); JSONArray data = jsonObject.getJSONObject("result").getJSONArray("results"); for (int i = 0; i < data.length(); i++) { JSONObject o = data.getJSONObject(i); String str = "_id:" + o.getString("_id") + " " + "項次:" + o.getString("項次") + "\n" + "停車場名稱:" + o.getString("停車場名稱") + "\n" + "經度:" + o.getString("經度(WGS84)") + "\n" + "緯度:" + o.getString("緯度(WGS84)"); list.add(str); } lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list)); }Step6.執行結果
將將~這樣就完成了~
在這邊呢我有調整過版面的位置以及顏色並且增加了Textview
大家有空練習的時候可以試試看改Json值的顏色喔~






留言
張貼留言