0

なぜこのようなJSONオブジェクトを読み取れないのだろうか:

{
    "1":{"bulan":"Januari","tahun":"2012","tagihan":"205000","status":"Lunas"},
    "2":{"bulan":"Februari","tahun":"2012","tagihan":"180000","status":"Lunas"},
    "3":{"bulan":"Maret","tahun":"2012","tagihan":"120000","status":"Lunas"},
    "4":{"bulan":"April","tahun":"2012","tagihan":"230000","status":"Lunas"},
    "5":{"bulan":"Mei","tahun":"2012","tagihan":"160000","status":"Lunas"},
    "6":{"bulan":"Juni","tahun":"2012","tagihan":"150000","status":"Belum Lunas"},
    "panjang":6
}

このような私のAndroidコードで:

    try {
        int length = jobj.getInt("panjang");

        for(int n = 0; n < length; n++){

            String m = Integer.toString(n)
            JSONObject row = jobj.getJSONObject(m);

            String bulan = row.getString("bulan");
            String tahun = row.getString("tahun");
            String tagihan = row.getString("tagihan");
            String status = row.getString("status");

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

            map.put("bulan", bulan);
            map.put("tahun", tahun);
            map.put("tagihan", tagihan);
            map.put("status", status);

            list.add(map);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

常に何も返されませんが、キーmを次のように特定のキーに変更すると正常に機能します。

String m = "1";

使えない

JSONObject row = jobj.getJSONObject(n);

getJSONObject()は、intではなく文字列のみを受け入れるためです。私のコードに何か問題がありますか?

4

1 に答える 1

1

問題はイテレータの初期値にあります。「0」がないため、キー「0」の検索に失敗しました。次のように変更します。

for(int n = 1; n <= length; n++){

問題を修正する必要があります。

于 2012-06-25T03:13:06.683 に答える