0

これは、アプリケーションで解析したいJSONデータです。

{
  "viewdeal":[
  {
     "viewdeal1":{
        "teetimeId":"33",
        "golfcourseId":"127",
        "offers":"descount of $2",
        "time":"8\/7\/pm",
        "amount":"90",
        "month":"august",
        "year":"2012",
        "date":"21",
        "day":"monday",
        "created_date":"0",
        "golfcourse_name":"SilverHorn Golf Club"
     },
     "msz":"Book"
   }
 ]
}

JSONデータの解析に使用しているコードは次のとおりです。

JsonParser jParser = new JsonParser();
JSONObject json = jParser.getJSONfromUrl("http://mygogolfteetime.com/iphone/viewdeal/127");
JSONArray viewdeal = json.getJSONArray(TAG_VWDL);
                vwdlsList.clear();
                for(int i=0; i<viewdeal.length(); i++)
                {
                    JSONObject v1 = viewdeal.getJSONObject(i);
                    msz = v1.getString(TAG_MSZ);
                    viewdeal1 = v1.getString(TAG_VWDL1);
                    JSONArray viewdeal1 = json.getJSONArray(TAG_VWDL1); 
                    for(int j=0; j<viewdeal1.length(); j++)
                    {
                        JSONObject v2 = viewdeal.getJSONObject(j);
                        teetimeId = v2.getString(TAG_TTIMEID);
                        golfcourseId = v2.getString(TAG_GLFCRSID);
                        offers = v2.getString(TAG_OFR);
                        time = v2.getString(TAG_TIME);
                        amount = v2.getString(TAG_AMNT);
                        month = v2.getString(TAG_MNTH);
                        year = v2.getString(TAG_YEAR);
                        date = v2.getString(TAG_DATE);
                        day = v2.getString(TAG_DAY);
                        created_date = v2.getString(TAG_CRTDATE);
                        golfcourse_name = v2.getString(TAG_GLFCRSNAME);
                    }

                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put(TAG_TTIMEID, teetimeId);
                    map.put(TAG_GLFCRSID, golfcourseId);
                    map.put(TAG_MSZ, msz);
                    map.put(TAG_OFR, offers);
                    map.put(TAG_TIME, time);
                    map.put(TAG_AMNT, amount);
                    map.put(TAG_MNTH, month);
                    map.put(TAG_YEAR, year);
                    map.put(TAG_DATE, date);
                    map.put(TAG_DAY, day);
                    map.put(TAG_CRTDATE, created_date);
                    map.put(TAG_GLFCRSNAME, golfcourse_name);

                    vwdlsList.add(map);
                }
            }

上記のコードでは、mszとviewdeal1の値を解析できますが、viewdeal1にある残りの値を解析しようとすると、LogCatに次のメッセージが表示されます。

08-22 12:03:46.034: V/GoGolf(1178): org.json.JSONException: No value for viewdeal1

viewdeal1にある残りの値を解析するにはどうすればよいですか。

前もって感謝します..

4

4 に答える 4

1

これを試して...

nParser jParser = new JsonParser();
JSONObject json = jParser.getJSONfromUrl("http://mygogolfteetime.com/iphone/viewdeal/127");
JSONArray viewdeal = json.getJSONArray(TAG_VWDL);
                vwdlsList.clear();
                for(int i=0; i<viewdeal.length(); i++)
                {

             ---->> **JSONObject v1= viewdeal.getJSONObject(i).getJSONObject("viewdeal1");**

                         .....
                         .....      
                }
于 2012-08-22T07:12:24.190 に答える
0

「viewdeal1」キーを2回要求する:

     viewdeal1 = v1.getString(TAG_VWDL1);
     JSONArray viewdeal1 = json.getJSONArray(TAG_VWDL1);

2行目は正しいので、オブジェクトとして使用します。最初のリストを削除する必要があります。

     JSONObject viewdeal1 = json.getJSONObject(TAG_VWDL1);

LogCatをチェックすると、正確な行がわかります。

GoGolf(1178)

これはGoGolf.javaの1178行目です。Eclipseの行番号をオンにしてください。1178行目は、そのキーに一致するが見つからないためviewdeal1 = v1.getString(TAG_VWDL1);No value for viewdeal1StringJSONObject

于 2012-08-22T06:58:42.553 に答える
0

こんにちはここではありviewdeal1ませんarrayobject

変化する

JSONArray viewdeal1 = json.getJSONArray(TAG_VWDL1); 

JSONObject viewdeal1 = json.getJSONObject(TAG_VWDL1);

削除します

viewdeal1 = v1.getString(TAG_VWDL1);

にないのでforループを削除してarrayくださいviewdeal1

aはブラケットでjson array始まります'['

于 2012-08-22T07:01:43.757 に答える
0

これを試して

JsonParser jParser = new JsonParser();
JSONObject json = jParser.getJSONfromUrl("http://mygogolfteetime.com/iphone/viewdeal/127");
 JSONArray viewdeal = json.getJSONArray(TAG_VWDL);
            vwdlsList.clear();

for(int i=0; i<</>viewdeal.length(); i++)
          {
                JSONObject v1 = viewdeal.getJSONObject(i);
                msz = v1.getString(TAG_MSZ);
JSONObject v2 = v1.getJSONObject(TAG_VWDL1);
 teetimeId = v2.getString(TAG_TTIMEID);
                    golfcourseId = v2.getString(TAG_GLFCRSID);
                    offers = v2.getString(TAG_OFR);
                    time = v2.getString(TAG_TIME);
                    amount = v2.getString(TAG_AMNT);
                    month = v2.getString(TAG_MNTH);
                    year = v2.getString(TAG_YEAR);
                    date = v2.getString(TAG_DATE);
                    day = v2.getString(TAG_DAY);
                    created_date = v2.getString(TAG_CRTDATE);
                    golfcourse_name = v2.getString(TAG_GLFCRSNAME);
 }

                HashMap<String, String> map = new HashMap<String, String>();
                map.put(TAG_TTIMEID, teetimeId);
                map.put(TAG_GLFCRSID, golfcourseId);
                map.put(TAG_MSZ, msz);
                map.put(TAG_OFR, offers);
                map.put(TAG_TIME, time);
                map.put(TAG_AMNT, amount);
                map.put(TAG_MNTH, month);
                map.put(TAG_YEAR, year);
                map.put(TAG_DATE, date);
                map.put(TAG_DAY, day);
                map.put(TAG_CRTDATE, created_date);
                map.put(TAG_GLFCRSNAME, golfcourse_name);

                vwdlsList.add(map);
            }
        }
于 2012-08-22T07:25:09.190 に答える