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

标签 java android 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);
}
}

我想从以下 JSON 中获取 Title 值:

{

"Title": "The Generation Game",
"Year": "1971–2001",
}

这是我的 mainActivity 代码:

public void btnFetchData_CLick(View v){

    fetchData process = new fetchData();
    process.execute();

}

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

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

最佳答案

您的 JSON 是 JsonObject 而不是 JsonArray,因此您应该这样做:

JSONObject JO = new JSONObject(data);

然后,如果你想获得标题,请执行以下操作:

title = JO.getString("标题");

你唯一拥有的 JSONArray 是这个:

"Ratings": [{
        "Source": "Internet Movie Database",
        "Value": "6.6/10"
    }],

关于java - 在 Android Studio 中获取 json 数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52284189/

相关文章:

javascript - 使用 getJSon 函数将 JSON 数据解析为 html 页面

java - 将 String 转换为 Activity 类

python - 如何修复此错误 : "SQLContext object has no no attribute ' jsonFile'

java - 等到重绘组件完成

java - 对流进行分区

android - 位置应用程序不断崩溃

android - 在android中的 map 中创建标记标题栏的自定义形状

php - 使用多维数组将 JSON 数据归档到 SQL 数据库

java - Struts2 - 将 WebContents 与后端逻辑隔离

java - 如何在非 Maven 项目中拥有相当于 main/resources 的内容?