8

JSON (以下に示す) がいくつかあり、JSON 全体を解析しようとしています。各オブジェクトは、以下の変数を宣言するクラスの新しいインスタンスになります。これを行う最善の方法は何ですか?JSONReader を使用するか、JSONObject と JSONArray を使用する必要がありますか。私はいくつかのチュートリアルを読み、いくつかの一般的な質問をしましたが、このようなデータを解析する方法の例を見たことがありません.

{
    "id": 356,
    "hassubcategories": true,
    "subcategories": [
        {
            "id": 3808,
            "CategoryName": "Current Products",
            "CategoryImage": null,
            "hassubcategories": true,
            "subcategories": [
                {
                    "id": 4106,
                    "CategoryName": "Architectural",
                    "CategoryImage": "2637",
                    "hassubcategories": true,
                    "subcategories": [
                        {
                            "id": 391,
                            "CategoryName": "Flooring",
                            "CategoryImage": "2745",
                            "hassubcategories": false
                        }
                    ]
                }
            ]
        },
        {
            "id": 3809,
            "CategoryName": "Non-Current Products",
            "CategoryImage": null,
            "hassubcategories": true,
            "subcategories": [
                {
                    "id": 4107,
                    "CategoryName": "Desk",
                    "CategoryImage": "2638",
                    "hassubcategories": true,
                    "subcategories": [
                        {
                            "id": 392,
                            "CategoryName": "Wood",
                            "CategoryImage": "2746",
                            "hassubcategories": false
                        }
                    ]
                }
            ]
        }
    ]
}
4

6 に答える 6

6

GSON は、ネストされたオブジェクトを操作する必要がある場合に最も簡単な方法です。

このような:

//after the fetched Json:
Gson gson = new Gson();

Event[] events = gson.fromJson(yourJson,  Event[].class);

//somewhere nested in the class:
static class Event{
    int id;
    String categoryName;
    String categoryImage;
    boolean hassubcategories;
    ArrayList<Event> subcategories;
}

このチュートリアル、 http://androidsmith.com/2011/07/using-gson-to-parse-json-on-android/ またはhttp://www.javacodegeeks.com/2011/01/android-jsonを確認できます。 -parsing-gson-tutorial.htmlまたはhttp://www.androidhive.info/2012/01/android-json-parsing-tutorial/

于 2013-02-07T03:22:32.927 に答える
3

もしそうなら、文字列全体を JSONObject に解析します

JSONObject obj = new JSONObject(str);

次に、サブカテゴリが JSONArray であることがわかります。だから私はそれをこのように変換します

JSONArray arr = new JSONArray(obj.get("subcategories"));

これにより、ループを実行してクラスオブジェクトをインスタンス化できます

for(int i = 0; i < arr.length; i++)
JSONObject temp = arr.getJSONObject(i);
Category c = new Category();
c.setId(temp.get("id"));
于 2013-02-07T03:24:59.313 に答える
0

投稿したJSONデータの例は、JSONのデータ構造に従っていないようです。Mustafaによって投稿された3番目のリンクで教えられているのとまったく同じ方法でデータを構築する必要があります。これは本当に素晴らしいチュートリアルです。私は手順に従いました、そしてそれは本当に働きます!

于 2013-02-07T03:32:49.430 に答える