2017-07-27 64 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... 
    }