1

この JSON コードがあります。「abridged_cast」を取得しようとしています。しかし複雑です。JSONArray 内の JSONObject onside jSONObject Inside JsonArray....

{
    "total": 591,
    "movies": [
        {
            "title": "Jack and Jill",
            "year": 2011,
            "runtime": "",
            "release_dates": {
                "theater": "2011-11-11"
            },
            "ratings": {
                "critics_score": -1,
                "audience_score": 90
            },
            "synopsis": "",
            "posters": {
                "thumbnail": "",
                "profile": "",
                "detailed": "",
                "original": ""
            },
            "abridged_cast": [
                {
                    "name": "Al Pacino",
                    "characters": []
                },
                {
                    "name": "Adam Sandler",
                    "characters": []
                },
                {
                    "name": "Katie Holmes",
                    "characters": []
                }
            ],
            "links": {
                "self": "",
                "alternate": ""
            }
        }
    ],
    "links": {
        "self": "",
        "next": ""
    },
    "link_template": ""
}

これは、「タイトル」と「年」を取得するための私のコードです

if (response != null) {
            try {
                // convert the String response to a JSON object,
                // because JSON is the response format Rotten Tomatoes uses
                JSONObject jsonResponse = new JSONObject(response);

                // fetch the array of movies in the response
                JSONArray movies = jsonResponse.getJSONArray("movies");

                // add each movie's title to an array
                movieTitles = new String[movies.length()];
                for (int i = 0; i < movies.length(); i++) {
                    JSONObject movie = movies.getJSONObject(i);
                    movieTitles[i] = movie.getString("title");
                }

abridged_cast を取得する方法がわからないので、誰かが私を助けてくれることを願っています"

4

2 に答える 2

0
try {
                 String Movie = null;
                 String abridged = null;
                JSONArray jsonResponse = new JSONArray(response);
                 for (int i = 0; i< jsonResponse.length(); i++) {
                        Movie     =   jsonResponse.getJSONObject(i).getString("movies").toString();
                        System.out.println("movies="+Movie);
                       abridged =   jsonResponse.getJSONObject(i).getString("abridged_cast").toString();
                 }


                 JSONArray jArray = new JSONArray(Movie);
                 for (int i = 0; i< jArray.length(); i++) {
                     String title       =   jArray.getJSONObject(i).getString("title").toString();
                     System.out.println("title="+title);

                 }

                JSONArray jabridgeArray = new JSONArray(abridged);
                 for (int i = 0; i< jabridgeArray.length(); i++) {
                     String title       =   jabridgeArray.getJSONObject(i).getString("name").toString();
                     System.out.println("title="+title);

                 }

            } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
于 2013-06-13T12:18:57.753 に答える
0

movies「映画」オブジェクトの配列が含まれています。これらのオブジェクトのそれぞれには、オブジェクトabridged_cast(「キャストメンバー」と呼びましょう) の配列であるフィールドが含まれています。

POJO にマップせず、代わりに JSON を使用する場合は、取得後にループでその配列を取得しmovie、別のループを使用して同じ方法でその配列から各「キャスト メンバー」オブジェクトを取得する必要があります。 .

...
JSONArray cast = movie.getJSONArray("abridged_cast");
for (int j = 0; j < cast.length(); j++) {
    JSONObject castMember = cast.getJSONObject(j);
    ... 
}

コメントから編集:元の質問には、持っている JSON から情報を抽出する方法が含まれていました。上記のコードはそれを説明しています。それを使用する方法について、より基本的なプログラミングの質問をしているようです。

Android に組み込まれているクラスを使用する場合org.jsonは、返された JSON オブジェクトの情報にアクセスする方法がわかりました。また、パッケージJSONObjectのオブジェクトとメソッドを使用して、parsed の周りにメソッドを記述して、データにそのままアクセスすることもできます。json.orgたとえば、映画の名前を文字列として取得し、その「movies」配列から正しいものを検索してJSONObject.

通常は、その JSON で返されるデータをカプセル化するクラスを Java で作成し、アクセス パターンに役立つデータ構造を使用します (たとえばMap、名前をキーとして使用してすべての映画を含むクラス)。クラスを使用して、org.jsonこれらのオブジェクトをインスタンス化し、質問で行っているように JSON を解析するときに手動で入力する必要があります。GsonまたはJSON 解析ライブラリのいずれかを使用した場合、Jacksonそれらは、持っている JSON を取得し、すべてのデータを作成したクラスにマッピングして、1 回の呼び出しで返すことができます。

于 2013-06-13T12:39:09.490 に答える