折射此代码的最佳方法? package.com.example.moviesearch; 导入java.util.ArrayList; 导入org.json.JSONArray; 导入org.json.JSONException; 导入org.json.JSONObject; 导入android.util.Log; 公共类解析JSON{ 私人电影; 私人弦乐流派; 私人字符串额定值; 私有字符串语言; 私人内部评级; 私人国家; 私有字符串发布日期; 私有字符串标题; 私人董事; 私人弦乐演员; 私有字符串plot_simple; 私人弦乐海报; 私有字符串运行时; 私有字符串imdb_url; 公共ArrayList parseJson(字符串json){ 电影=新的ArrayList(); 试一试{ JSONArray jArray=新的JSONArray(json); for(int i=0;i
我正在制作一个android应用程序,需要解析json数据。我将此json数据转换为自定义类。有时候我解析的json不存在,所以我必须为它输入一个默认值,我觉得这太残忍了。还有一个方法折射此代码的最佳方法? package.com.example.moviesearch; 导入java.util.ArrayList; 导入org.json.JSONArray; 导入org.json.JSONException; 导入org.json.JSONObject; 导入android.util.Log; 公共类解析JSON{ 私人电影; 私人弦乐流派; 私人字符串额定值; 私有字符串语言; 私人内部评级; 私人国家; 私有字符串发布日期; 私有字符串标题; 私人董事; 私人弦乐演员; 私有字符串plot_simple; 私人弦乐海报; 私有字符串运行时; 私有字符串imdb_url; 公共ArrayList parseJson(字符串json){ 电影=新的ArrayList(); 试一试{ JSONArray jArray=新的JSONArray(json); for(int i=0;i,java,android,json,Java,Android,Json,我正在制作一个android应用程序,需要解析json数据。我将此json数据转换为自定义类。有时候我解析的json不存在,所以我必须为它输入一个默认值,我觉得这太残忍了。还有一个方法 package com.example.moviesearch; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import
package com.example.moviesearch;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class ParseJSON {
private ArrayList<Movie> movies;
private String genres;
private String rated;
private String language;
private int rating;
private String country;
private String release_date;
private String title;
private String directors;
private String actors;
private String plot_simple;
private String poster;
private String runtime;
private String imdb_url;
public ArrayList<Movie> parseJson(String json) {
movies = new ArrayList<Movie>();
try {
JSONArray jArray = new JSONArray(json);
for (int i = 0; i < jArray.length(); i++) {
JSONObject j = jArray.getJSONObject(i);
try {
genres = j.getString("genres").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
genres = "notfound";
}
try {
rated = j.getString("rated");
} catch (Exception e) {
rated = "not found";
}
try {
language = j.getString("language").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
language = "notfound";
}
try {
rating = j.getInt("rating");
} catch (Exception e) {
rating = 404;
}
try {
country = j.getString("country").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
country = "not found";
}
try {
release_date = j.getString("release_date");
} catch (Exception e) {
release_date = "notfound";
}
try {
title = j.getString("title").replace("\n", "");
} catch (Exception e) {
title = "notfound";
}
try {
directors = j.getString("directors").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
directors = "notfound";
}
try {
actors = j.getString("actors").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
actors = "notfound";
}
try {
plot_simple = j.getString("plot_simple");
} catch (Exception e) {
poster = "notfound";
}
try {
JSONObject c = j.getJSONObject("poster");
poster = c.getString("cover");
} catch (Exception e) {
poster = "notfound";
}
try {
runtime = j.getString("runtime").replace("[", "")
.replace("]", "").replaceAll("\"", "");
} catch (Exception e) {
runtime = "notfound";
}
try {
imdb_url = j.getString("imdb_url");
} catch (Exception e) {
imdb_url = "notfound";
}
Movie movie = new Movie(genres, rated, language, rating,
country, release_date, title, directors, actors,
plot_simple, poster, runtime, imdb_url);
movies.add(movie);
}
} catch (JSONException e) {
Log.e("jsonerror", "", e);
}
return movies;
}
}
在这里,您可以为找不到值的情况传递一些默认值,这样您就不必在每次getString之后捕捉异常了!问题不应该有问号吗?我不知道reg exp会有什么帮助。无论哪种方式,我都必须检查json是否存在。你能提供一个例子吗?也许我理解错了。一个尝试捕获多个必要的异常,学习三元,并在适当的地方尝试optString()方法。哇,正是我需要的,谢谢
j.optString("imdb_url", "notfound");