猿问

在 json Android Studio 中获取数据的问题

我是 Android Studio 的新手,我想使用来自 omdb.com 的 API 获取一些数据,这是我的操作方法:


我创建了一个类:


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 ="";


@Override

protected 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;

}


@Override

protected 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();


}

当我点击按钮时,没有任何反应!


为什么我无法访问任何值?


BIG阳
浏览 236回答 1
1回答

犯罪嫌疑人X

你的 JSON 是一个 JsonObject 而不是 JsonArray,所以你应该这样做:JSONObject JO = new JSONObject(data);然后,如果您想获得标题,请执行以下操作:title = JO.getString("Title");您拥有的唯一 JSONArray 是这个:"Ratings": [{&nbsp; &nbsp; &nbsp; &nbsp; "Source": "Internet Movie Database",&nbsp; &nbsp; &nbsp; &nbsp; "Value": "6.6/10"&nbsp; &nbsp; }],
随时随地看视频慕课网APP

相关分类

Java
我要回答