參考資料1的內容擷取:

JSON有兩種方式來寫入資料,一種是陣列(Array)[],另一種是物件(Object){}。

陣列或物件的Value可以使用的資料型態包含:數字(int, float)、字串(string)、布林值(boolean)、陣列(Array)、物件(Object)或是空值(null)。

=====

實際範例

package com.example.chen.asynctaskjson;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    Button button;
    TextView mytest;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      mytest = (TextView) findViewById(R.id.mytext);
        button = (Button) findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new GoodTask().execute(" http://...自訂...");
            }
        });
    }

    class GoodTask extends AsyncTask<String, Integer, String> {
        // <傳入參數, 處理中更新介面參數, 處理後傳出參數>
        private static final int TIME_OUT = 1000;

        String jsonString1 = "";

        @Override
        protected String doInBackground(String... countTo) {
            // TODO Auto-generated method stub
            // 再背景中處理的耗時工作
        try{
            HttpURLConnection conn = null;
            URL url = new URL(countTo[0]);
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("GET");
            conn.connect();
            // 讀取資料
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    conn.getInputStream(), "UTF-8"));
            jsonString1 = reader.readLine();
            reader.close();

            if (Thread.interrupted()) {
                throw new InterruptedException();

            }
            if (jsonString1.equals("")) {
                Thread.sleep(1000);
            }
        }

        catch(Exception e)
        {
            e.printStackTrace();
            return "網路中斷"+e;
        }

        return jsonString1;
    }


        String [] tital;
        String [] id;
        public void onPostExecute(String result )
        { super.onPreExecute();
            // 背景工作處理完"後"需作的事

           // JSONObject obj;
            try {
              //  obj = new JSONObject(result);
                //如果傳來的json是物件,且有給名字比如:data:{}才會使用obj.getString(“data”)               
               // String data = obj.getString("data");
                //這裡傳來的是JSON陣列,因此要把剛剛撈到的字串轉換為JSON陣列
                JSONArray dataArray = new JSONArray(result);
                //先宣告tital跟id的字串陣列來存放等等要拆解的資料
                tital = new String [dataArray.length()];
                id = new String [dataArray.length()];

                //因為data陣列裡面有好多個JSON物件,因此利用for迴圈來將資料抓取出來
                //因為不知道data陣列裡有多少物件,因此我們用.length()這個方法來取得物件的數量
                for (int i = 0; i < dataArray.length(); i++) {
                    //接下來這兩行在做同一件事情,就是把剛剛JSON陣列裡的物件抓取出來
                    //並取得裡面的字串資料
                    //dataArray.getJSONObject(i)這段是在講抓取data陣列裡的第i個JSON物件
                    //抓取到JSON物件之後再利用.getString(“欄位名稱”)來取得該項value
                   
                    tital[i] = dataArray.getJSONObject(i).getString("Tital");
                    id[i] = dataArray.getJSONObject(i).getString("Id");
                }
            }
            catch (JSONException e) {e.printStackTrace();
            }
            //step1:
            //mytest.setText("JSON:\r\n"+ result);
            //step2:
            mytest.setText("JSON:\r\n  tital:"+  tital[0]+"\r\n");


        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);
            // 背景工作處理"中"更新的事

        }

    }
}

參考資料:

1.ANDROID拆解JSON及JSON SERVER範例

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 程式小試身手 的頭像
    程式小試身手

    程式小試身手

    程式小試身手 發表在 痞客邦 留言(0) 人氣()