2017年5月30日 星期二

專題作業4

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~~\( ̄︶ ̄)/\( ̄︶ ̄)/\( ̄︶ ̄)/

沒有留言:

張貼留言