Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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以获取特定值_Java_Android_Json_Mobile - Fatal编程技术网

Java 循环JSON以获取特定值

Java 循环JSON以获取特定值,java,android,json,mobile,Java,Android,Json,Mobile,我需要循环使用JSON并获得以下信息: 原始标题、概述、发布日期、海报路径 我有以下代码 @Override protected void onPostExecute(String s) { try { JSONObject jsonObject = new JSONObject(result); JSONArray jArray = jsonObject.getJSONArray("results");

我需要循环使用JSON并获得以下信息:

原始标题、概述、发布日期、海报路径

我有以下代码

 @Override
    protected void onPostExecute(String s) {


        try {

            JSONObject jsonObject = new JSONObject(result);

            JSONArray jArray = jsonObject.getJSONArray("results");

            JSONObject json_data = null;



          for (int i = 0; i < jArray.length(); i++) {


             JSONObject finalObject = jArray.getJSONObject(i);

            String movie_title = finalObject.getString("title");

            String releaseDate = finalObject.getString("release_date");



                mMovie_title.setText(movie_title);
                mReleaseDate.setText(releaseDate);



           }


            super.onPostExecute(s);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
@覆盖
受保护的void onPostExecute(字符串s){
试一试{
JSONObject JSONObject=新JSONObject(结果);
JSONArray jArray=jsonObject.getJSONArray(“结果”);
JSONObject json_data=null;
for(int i=0;i
这段代码的问题是,它只能让我得到数组中的最后一部电影

它不会打印任何其他电影标题

我需要做的是从JSON中获取电影标题以及概述、发布日期和海报路径

这里是JSON

非常感谢您的帮助

看起来您每次都在重新分配相同的变量。这就是为什么你只得到最后一个元素

您可能需要一个
StringBuilder

StringBuilder titles = new StringBuilder();

for ... {
    ...
    titles.append(movie_title);
}

mMovie_title.setText(titles.toString());

循环JSON不是一个好的决定

尝试使用 性能比这更好,也是一个很好的练习

Gson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象


编码不错

如果您想存储多个电影标题,那么您需要一些东西

首先,需要一个电影对象来保存电影标题和电影日期的值。比如:

public class Movie {
    private String movieTitle;
    private String releaseDate;
    public Movie(String movieTitle, String releaseDate) {
        super();
        this.movieTitle = movieTitle;
        this.releaseDate = releaseDate;
    }
}
然后你需要有一个电影列表

super.onPostExecute(s);
List<Movie> movies = new ArrayList<Movie>();
Movie movie = null;
try {
    JSONObject jsonObject = new JSONObject(result);
    JSONArray jArray = jsonObject.getJSONArray("results");
    JSONObject json_data = null;
        for (int i = 0; i < jArray.length(); i++) 
            JSONObject finalObject = jArray.getJSONObject(i);
            String movie_title = finalObject.getString("title");
            String releaseDate = finalObject.getString("release_date");
            movies.add(new Movie(movie_title, releaseDate));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    // Do something with movies
    // example ::
    for (Movie movie : movies) {
        textView.setText(movie.getMovieTitle); // etc...
    }
super.onPostExecute;
列表电影=新建ArrayList();
Movie=null;
试一试{
JSONObject JSONObject=新JSONObject(结果);
JSONArray jArray=jsonObject.getJSONArray(“结果”);
JSONObject json_data=null;
for(int i=0;i
类似问题
super.onPostExecute(s);
List<Movie> movies = new ArrayList<Movie>();
Movie movie = null;
try {
    JSONObject jsonObject = new JSONObject(result);
    JSONArray jArray = jsonObject.getJSONArray("results");
    JSONObject json_data = null;
        for (int i = 0; i < jArray.length(); i++) 
            JSONObject finalObject = jArray.getJSONObject(i);
            String movie_title = finalObject.getString("title");
            String releaseDate = finalObject.getString("release_date");
            movies.add(new Movie(movie_title, releaseDate));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    // Do something with movies
    // example ::
    for (Movie movie : movies) {
        textView.setText(movie.getMovieTitle); // etc...
    }