1

私は単純な問題を抱えており、2 日以来それに取り組むことができません。Android の初心者であることは、時には大変なことに思えます。しかし、ここに行きます、

簡単な JSON ファイルを以下に示します。

"results" : [
{
     "value1" : {
        "sub-value" : {
           "sub-sub-value1" : "This is one value",
           "sub-sub-value2" : "This is one more.."
        }
     },
     "value2" : "http://someURL.com",
     "value3" : "areferencejunkvalue",
  }
],
...<many such result sets>
 "status" : "status_value"
}

この単純な JSON ファイルを解析するためのコードは次のとおりです。

try {
JSONArray results = json.getJSONArray("results");
JSONObject value1 = results.getJSONObject("value1");
JSONArray subvalue = locationGeom.getJSONArray("sub-value");

for (int i = 0; i < results.length(); i++) {
      // Gets data for value2,value3
      String value2 = results.getString("value2");
      String value3 = results.getString("value3");

      // Gets data from the sub-sub-value1
      String ssv1 = subvalue.getJSONObject(0).getString("sub-sub-value1").toString();
      // Gets data from the sub-sub-value2
      String ssv2 = subvalue.getJSONObject(0).getString("sub-sub-value2").toString();
    }
 } catch (JSONException e1) {
Log.e("E", "Issue is here..");
e1.printStackTrace();
}

さて、問題は次のとおりです。

05-06 23:39:07.846: W/System.err(378): org.json.JSONException: Value [JSONObject parsed] at results of type org.json.JSONArray cannot be converted to JSONObject

ここでどこが間違っているのか誰か教えてもらえますか? 助けていただければ幸いです。

4

1 に答える 1

2

sub-valueは配列ではなく、オブジェクトです。例:

JSONArray results = json.getJSONArray("results");
JSONObject value1 = results.getJSONObject(0).getJSONObject("value1");
JSONObject subvalue = locationGeom.getJSONObject("sub-value");

基本的な抽出ルールは非常に単純です。

from \ get  |  JSONObject                     | JSONArray
------------+---------------------------------+--------------------------------
JSONObject  | jobj.getJSONObject(String key); | jobj.getJSONArray(String key);
JSONArray   | jobj.getJSONObject(int index);  | jobj.getJSONArray(int index);

以下も参照してください。

于 2012-05-07T00:03:43.127 に答える