折射此代码的最佳方法? 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

折射此代码的最佳方法? 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

我正在制作一个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 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");