Android Studio 專案結合JSON網站服務


第一步:創建專案


第二步:取得JSON字串(非網路)

1.至JSON暫存網站,進行檔案測試
以 myjson.com 為例,連結後打上資料生成網址,要在專案當中使用
[
{
"name": "Kangkai",
"number": "666 555-1234"
},
{
"name": "Handsome",
"number": "777 555-5678"
}
]





2.至Android Studio進行連結
回到Android Studio,先開啟網路權限,因為Json是來自於網路服務的回傳結果。

打開AndroidManifest.xml檔案,輸入開啟網路權限的程式碼:
<uses-permission android:name="android.permission.INTERNET"/>




另外新建一個class檔,必須繼承至AsyncTask<傳入值型態, 更新進度型態, 結果型態>。



加入程式碼,並匯入元件、產生實作方法。
public class 你的class名稱 extends AsyncTask<String,Void,String>


宣告待會需要用到的變數,並匯入需要的元件。輸入以下程式碼:
String data = "";
InputStream inputStream = null;


doInBackground方法的內容,輸入以下程式碼


try { URL url = new URL(urlStrings[0]); 
HttpURLConnection httpURLConnection = 
 (HttpURLConnection) url.openConnection(); 

 InputStream inputStream = httpURLConnection.getInputStream();  

BufferedReader bufferedReader = 
    new BufferedReader(new InputStreamReader(inputStream));
String line = ""; 
 while (line != null) { 
 line = bufferedReader.readLine();
 data = data + line; 
 } 
} catch (MalformedURLException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace(); 
}
 return data;


再輸入onPostExecute方法,與UI做連結。


protected void onPostExecute(String data){
super.onPostExecute(data);
MainActivity.tv.setText(data);


移至res > layout,打開activity_main.xml檔案
可用textview元件顯示json的資料
在maicActivity加入程式碼
public class MainActivity extends AppCompatActivity {
public static TextView tv;
@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = findViewById(R.id.txtJsonData);

String url = "https://api.myjson.com/bins/1epgcy";

GetNetworkJson process = new GetNetworkJson();

process.execute(url);

}



完成。

第三步:取得JSON字串(網路)
1/在專案找到build.gradle(Module:app)檔案,輸入程式碼,並點擊同步。


implementation 'com.android.volley:volley:1.1.0'




2.開始讀取opendata
MainActivity.java,在oncreate()以外輸入程式碼
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;




到activity_main.xml,增加一個listview,並設定ID與其它屬性
在oncreate()增加程式碼,Layout的ListView,讓getData()抓到網址

最後設置json資料顯示在listview的格式








留言

這個網誌中的熱門文章

Android Studio 新增 Facebook SDK 到你的專案

Android Studio Facebook 的登入與基本權限