Opendata開放資料&Json
使用的開放資料:
新北市NewTaipei熱點
http://data.ntpc.gov.tw/od/data/api/04958686-1B92-4B74-889D-9F34409B272B?$format=json
一、確認網路權限
在AndroidMainfest.xml中,輸入以下程式碼,以開啟網路權限
<uses-permission android:name="android.permission.INTERNET"/>
二、加入ASYNCTASK
在MainActivity.java中(後面都在相同位置),輸入以下程式碼
class JSonTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
StringBuilder sb = new StringBuilder();
try {
URL url = new URL(params[0]);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line = in.readLine();
while (line != null) {
Log.d("HTTP", line);
sb.append(line);
line = in.readLine();
}
}
catch (Exception e) {
}
return sb.toString();
}
protected void onPostExecute(String s){
super.onPostExecute(s);
Log.d("JSON", s);
parseJSON(s);
}
}
三、設定取得Json資料類別
輸入以下程式碼
private void parseJSON(String s){
try {
JSONArray OpenData = new JSONArray(s);
for (int i = 0; i < 5; i++){
JSONObject json = OpenData.getJSONObject(i);
Log.i("JSON"+i,json.getString("company"));
String result1 = json.getString("district");
Log.i("JSON"+i,"熱點地區:"+result1);
String result2 = json.getString("spot_name");
Log.i("JSON"+i,"熱點名稱:"+result2);
String result3 = json.getString("address");
Log.i("JSON"+i,"熱點地址:"+result3);
String result4 = json.getString("latitude");
Log.i("JSON"+i,"熱點經度:"+result4);
String result5 = json.getString("longitude");
Log.i("JSON"+i,"熱點緯度:"+result5);
}
}
catch (JSONException e){
}
}
四、設定URL與程式互相呼應
輸入以下程式碼
String URL_A = "http://data.ntpc.gov.tw/od/data/api/04958686-1B92-4B74-889D-9F34409B272B?$format=json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new JSonTask().execute(URL_A);
}
五、最終結果
打開"Android Monitor",選取"Debug",搜尋"JSON"
Finish~~
\( ̄︶ ̄)/\( ̄︶ ̄)/\( ̄︶ ̄)/