循环访问JSON以获取特定值

时间:2017-07-27 16:50:42

标签: java android json mobile

我需要遍历JSON并获取以下信息:

原始标题,概述,发布日期,poster_path。

我有以下代码..

 @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();
        }
    }

这段代码的问题在于它只能让我获得数组中的最终影片。

它不会打印任何其他电影。

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

这是JSON .. https://api.themoviedb.org/3/movie/top_rated?api_key=f1d314280284e94ff7d1feeed7d44fdf&language=en-US&page=1

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

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

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

你应该有一个StringBuilder

StringBuilder titles = new StringBuilder();

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

mMovie_title.setText(titles.toString());

答案 1 :(得分:0)

循环JSON不是一个好的决定。

尝试使用GSON 性能比这更好,也是一种非常好的做法

  

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

编码好!

答案 2 :(得分:0)

如果你想存储多部电影,那么你需要做一些事情。

首先,您需要一个电影对象来保存电影标题和电影日期的值。类似的东西:

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...
    }