Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在json Android Studio中获取数据时出现问题_Java_Android_Json_Android Studio - Fatal编程技术网

Java 在json Android Studio中获取数据时出现问题

Java 在json Android Studio中获取数据时出现问题,java,android,json,android-studio,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

我是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);
}
}
这是我的主要活动代码:

public void btnFetchData_CLick(View v){

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

}
当我点击按钮时,什么也没发生


为什么我不能访问任何值?

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

JSONObject JO = new JSONObject(data);
然后,如果你想获得标题,请执行以下操作:

JSONObject JO = new JSONObject(data);
title=JO.getString(“title”)

您唯一拥有的JSONArray是:

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

如果你打印LN(数据),你能得到你想要的吗?另外,我没有从该URL返回数组。我得到一个物体。也许可以尝试新的JSONObject(数据)并尝试从中读取标题。也可以在循环时检查您,第一次读取应该是退出循环,然后在关闭它之前重复。如果第一次读取返回null,您的数据将包含一个“null”字!非常感谢不客气:)请随意将此标记为正确的^^我会的,我应该等2分钟。。。