1

JSON配列の2番目のレイヤーを取得できないようです。私が欲しいのは、カテゴリからすべての名前を取得してから、インテントを介して「フォーラムID」を別のアクティビティに送信したいということです。それが役立つ場合は、このチュートリアル
に従い、ここから JSON 配列を取得しています

JSON 配列の一部

{
"categories": [{
    "name": "Facepunch",
    "forums": [{
        "id": 6,
        "name": "General Discussion",
        "viewing": 217
    }, {
        "id": 60,
        "name": "Fast Threads",
        "viewing": 188
    }, {
        "id": 64,
        "name": "Videos And Flash Movies and That Kind Of Crap",
        "viewing": 239
    }, {
        "id": 403,
        "name": "Mass Debate",
        "viewing": 9
    }, {
        "id": 396,
        "name": "Sensationalist Headlines",
        "viewing": 455
    }, {
        "id": 51,
        "name": "In The News Node",
        "viewing": 100
    }]
  }]
}

私のコードの一部

try {
    // Getting Array of Contacts
categories = json.getJSONArray(TAG_CATEGORIES);
forums = json.getJSONArray(TAG_FORUMS); 

// looping through All categories
for(int i = 0; i < categories.length(); i++){
    JSONObject c = categories.getJSONObject(i);


    // Storing each json item in variable
    String CatName = c.getString(TAG_CATName);

    // Phone number is agin JSON Object
            JSONObject All_forums = forums.getJSONObject(i);
            String forum_id = All_forums.getString(TAG_FORUMS_ID);
            String forum_name = All_forums.getString(TAG_FORUMS_NAME);

        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();

        // adding each child node to HashMap key => value
    map.put(TAG_CATName, CatName);
    map.put(TAG_FORUMS, forum_name);


    // adding HashList to ArrayList
    contactList.add(map);
}
} catch (JSONException e) {
    e.printStackTrace();
}
4

5 に答える 5

2

1つのカテゴリのフォーラムの配列を取得するには、電話する必要があります

forums = c.getJSONArray(TAG_FORUMS);

forループ内。その後、フォーラムを繰り返してIDと名前を取得できます。

コードサンプル:

categories = json.getJSONArray(TAG_CATEGORIES);
for(int i = 0; i < categories.length(); i++) {
    JSONObject c = categories.getJSONObject(i);
    forums = c.getJSONArray(TAG_FORUMS);
    for(int j = 0; j < forums.length(); j++){
        JSONObject f = forums.getJSONObject(j);
        String forum_id = f.getString(TAG_FORUMS_ID);
        String forum_name = f.getString(TAG_FORUMS_NAME);
        …
    }
}
于 2013-02-18T14:34:26.770 に答える
1

カテゴリ JSONObject から 2 番目のレイヤーを取得する必要があります。

try {
// Getting Array of Contacts
categories = json.getJSONArray(TAG_CATEGORIES);

// looping through All categories
for(int i = 0; i < categories.length(); i++){
    JSONObject c = categories.getJSONObject(i);

    forums = c.getJSONArray(TAG_FORUMS); 

    ...
}
于 2013-02-18T14:37:03.057 に答える
0

これを試してください:
// 連絡先
カテゴリの配列を取得する = json.getJSONArray(TAG_CATEGORIES);
フォーラム = カテゴリ.getJSONArray(TAG_FORUMS);

// すべてのカテゴリをループ
for(int i = 0; i < forums.length(); i++){
JSONObject c = forums.getJSONObject(i);
// あなたのコード ....
}

于 2013-02-18T14:40:20.753 に答える
0

Gson パーサーを使用する必要があります。Android 標準の JSON パーサーよりも非常にシンプルで基本的な使い方です。あなたは非常に基本的に解析しています。

オブジェクトまたはプリミティブ型に既に含まれている json オブジェクト項目のクラスを作成します。

于 2013-02-18T14:29:33.020 に答える
0

簡単な使い方

public String getClasstoJson(Object o) throws Exception
{
    Gson gson = new Gson();
    gson.toJson(o);
    return gson.toString();
}

public Object getJsontoClass(Object o,String json) throws Exception
{

    Gson gson = new Gson();

    try {
        Object st = o.getClass().newInstance();
        st= gson.fromJson(json.toString(), st.getClass());
        return  st;

    }catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;
}
于 2013-02-18T14:42:11.610 に答える