使用okHttp讀取JSON資料
介紹
什麼是JSON?,JSON的全名是JavaScript Object Notation,用途是資料交換。之前會使用XML來做資料交換,可是當資料量很多時,XML檔會變很肥大,而JSON是輕量級的資料交換格式。物件是以左大括號 { 開始,右大括號 } 結束。並以key:value的方式來儲存資料,多組的話則以逗號分開,看起來如下
{
"Data": [
{
"Id": "0f4e3749-fdfa-42a3-9023-752e478297db",
"Name": "雷霆專案"
},
{
"Id": "be92c897-56fa-43b6-9d5b-12aebdc5bbce",
"Name": "蜂眼專案"
}
]
}
OkHttp是一個網路的應用程式框架,可快速實作資料交換的動作,讓Http連線的過程更有效率。使用OkHttp,可以簡化需先設計AsyncTask、輸出入迴圈或是許多執行緒等工作,讓開發的速度加快。官方網址
gradle設置
加入OkHttp。
compile 'com.squareup.okhttp3:okhttp:3.4.1'
權限設定
在AndroidManifest.xml加入,允許應用程式訪問網路上的信息權限和允許應用程式打開網路,這兩個權限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
OkHttp讀取JSON
在最外面宣告OkHttpClient。
private OkHttpClient client = new OkHttpClient();
然後在OnCreate裡面實作,如下,執行後會發現,是以非同步的方式執行的,再之後要將資料放進NumberPicker,會是一個問題,這裡先不用管,之後會利用RxJava來解決。
Request request = new Request.Builder().url("你的JSON Url").build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
Log.d("OkHttp", json);
}
});
執行結果
可以讀取到JSON的資料,如下圖