2017-07-27 7 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); 

あなたは同じ変数たびに再割り当てされているように見えます。だからこそ、あなたは最後の要素を得るだけです。

あなたは、おそらくそれがループJSONに良い決断ではありませんStringBuilder

StringBuilder titles = new StringBuilder(); 

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

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

を持つ必要があります。

Gsonは、JavaはそのJSON表現にオブジェクトに変換するために使用できるJavaライブラリです。パフォーマンスがより優れているGSON を使用してみてくださいとも、それは非常に良い習慣だ

これは、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... 
    } 
関連する問題