2017-07-27 38 views
-2

我通过JSON需要循环,并获得以下信息:遍历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

任何帮助深表感谢。

+0

类似问题 https://stackoverflow.com/questions/2591098/how-to-parse-json-in-java –

回答

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

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

你或许应该有一个StringBuilder

StringBuilder titles = new StringBuilder(); 

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

mMovie_title.setText(titles.toString()); 
0

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

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

GSON是可以用来将Java对象转换成JSON的表示形式的Java库。它也可以用来将JSON字符串转换为等效的Java对象。

不错的编码!

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