我是 Android Studio 的新手,我想使用來自 omdb.com 的 API 獲取一些數(shù)據(jù),這是我的操作方法:我創(chuàng)建了一個(gè)類:package com.example.emad.apidemo;import android.os.AsyncTask;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class fetchData extends AsyncTask<Void,Void,Void> {public String data = "";public String Title ="";@Overrideprotected Void doInBackground(Void... voids) { try { URL url = new URL("http://www.omdbapi.com/?t=the+generation&apikey=42ae84fb"); 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; } JSONArray JA = new JSONArray(data); JSONObject JO = JA.getJSONObject(0); Title = JO.getString("Title"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } return null;}@Overrideprotected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); MainActivity.txtResponse.setText(this.Title);}}我想Title從以下 JSON 中獲取值:{"Title": "The Generation Game","Year": "1971–2001",}這是我的 mainActivity 代碼:public void btnFetchData_CLick(View v){ fetchData process = new fetchData(); process.execute();}當(dāng)我點(diǎn)擊按鈕時(shí),沒有任何反應(yīng)!為什么我無法訪問任何值?
1 回答

犯罪嫌疑人X
TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
你的 JSON 是一個(gè) JsonObject 而不是 JsonArray,所以你應(yīng)該這樣做:
JSONObject JO = new JSONObject(data);
然后,如果您想獲得標(biāo)題,請(qǐng)執(zhí)行以下操作:
title = JO.getString("Title");
您擁有的唯一 JSONArray 是這個(gè):
"Ratings": [{
"Source": "Internet Movie Database",
"Value": "6.6/10"
}],
添加回答
舉報(bào)
0/150
提交
取消