我需要遍历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中获取电影标题以及概述,发布日期和时间。海报路径。
非常感谢任何帮助。
答案 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...
}