2017-04-07 15 views
0

사실 저는 YQL에서 데이터를 검색하려고하는데 복잡한 종류의 json 객체/배열을 사용할 때 성공합니다. 디버거 나에게 라이브 경기가 JSON 코드org.json.JSON.typeMismatch (JSON.java:100)에서 오류가 발생했습니다.

이에있다하지 않을 경우 org.json.JSON.typeMismatch (JSON.java:100)에서이 오류

넣다

Link for JSON 을 보여줍니다

{ 
"query": { 
    "count": 1, 
    "created": "2017-04-07T20:16:20Z", 
    "lang": "en-US", 
    "diagnostics": { 
    "cache": { 
    "execution-start-time": "0", 
    "execution-stop-time": "2", 
    "execution-time": "2", 
    "method": "GET", 
    "type": "MEMCACHED", 
    "content": "TABLE.queryyahooapiscomproductionsg3.cricket.scorecard.live.summary.4daacfcfafc467783e90b0c5c31a615f" 
    }, 
    "publiclyCallable": "true", 
    "url": { 
    "execution-start-time": "2", 
    "execution-stop-time": "5", 
    "execution-time": "3", 
    "content": "http://cricketwebservice/ws/cwsapi/live/livematches.php?output=summary" 
    }, 
    "user-time": "5", 
    "service-time": "5", 
    "build-version": "2.0.97" 
    }, 
    "results": { 
    "Scorecard": { 
    "v": "0", 
    "mid": "196000", 
    "m": "2", 
    "series": { 
    "series_id": "12604", 
    "series_name": "Pakistan in West Indies ODI Series, 3 ODI Cricket Series, 2017" 
    }, 
    "ecf": "0", 
    "place": { 
    "vid": "179", 
    "stadium": "Providence Stadium, Guyana", 
    "city": "Guyana", 
    "country": "West Indies", 
    "Gimaget": "https://s.yimg.com/qx/cricket/fufp/images/venue_179_thumb-12-7-2010-89c7b8de5692a58c7abcd56bd61fdfeb.jpg", 
    "date": "20170407133000", 
    "enddate": "20170407213000" 
    }, 
    "mn": "1st ODI", 
    "teams": [ 
    { 
     "i": "9", 
     "fn": "West Indies", 
     "sn": "WI", 
     "logo": { 
     "std": "https://s.yimg.com/qx/cricket/fufp/images/west_indies-26-2-2013-d3ee3026b84398864c10e4320494c6e8.jpg", 
     "small": "https://s.yimg.com/qx/cricket/fufp/images/west_indies_small-26-2-2013-d0e88ec3179f31a2c0ebc05e1830453e.jpg" 
     }, 
     "flag": { 
     "std": "https://s.yimg.com/qx/cricket/fufp/images/west_indies_flag-1-2-2011-1f60ba1dc32a680e11ae5efe99bcc924.gif", 
     "small": "https://s.yimg.com/qx/cricket/fufp/images/west_indies_flag_small-1-2-2011-7f81c93235b1ea332d460c28778e21a4.gif", 
     "roundstd": "https://s.yimg.com/qx/cricket/fufp/images/9-11-2-2012-c51c1d9604f42152a6e87e5cb38542e3.png", 
     "roundsmall": "https://s.yimg.com/qx/cricket/fufp/images/9_s-11-2-2012-b317c02e8201f9cbbefd3d21381bb534.png", 
     "roundlarge": "https://s.yimg.com/qx/cricket/fufp/images/9_l-11-2-2012-da7e8c6fe82f0fa6ec7ee4d3051d3ba6.png" 
     } 
    }, 
    { 
     "i": "6", 
     "fn": "Pakistan", 
     "sn": "PAK", 
     "logo": { 
     "std": "https://s.yimg.com/qx/cricket/fufp/images/pakistan-26-2-2013-f6f54d67dea9677b03ddc1c009c070f9.jpg", 
     "small": "https://s.yimg.com/qx/cricket/fufp/images/pakistan_small-26-2-2013-6af95f1da13f29b8ef5ccfbf3cb89648.jpg" 
     }, 
     "flag": { 
     "std": "https://s.yimg.com/qx/cricket/fufp/images/pakistan_flag-1-2-2011-f99a8132f62ed22d64b985c2ba0d65eb.gif", 
     "small": "https://s.yimg.com/qx/cricket/fufp/images/pakistan_flag_small-1-2-2011-5bbc7ebe24b9bc2460e131bfc9cafd78.gif", 
     "roundstd": "https://s.yimg.com/qx/cricket/fufp/images/6-11-2-2012-e492bb0be566324796f25d3bcd2c3019.png", 
     "roundsmall": "https://s.yimg.com/qx/cricket/fufp/images/6_s-11-2-2012-2ef4be67daf68f843f48115ff5ba8f1a.png", 
     "roundlarge": "https://s.yimg.com/qx/cricket/fufp/images/6_l-11-2-2012-472fc93551b80e5564b9fd0355191a4e.png" 
     } 
    } 
    ], 
    "past_ings": [ 
    { 
     "s": { 
     "t": "1", 
     "i": "2", 
     "ps": "0", 
     "stay_live": "Yes", 
     "ld": "No", 
     "ldmsg": null, 
     "pms": "live", 
     "ed": "Power Play 2", 
     "a": { 
     "fo": "0", 
     "pp": "2", 
     "i": "9", 
     "cr": "4.69", 
     "r": "158", 
     "o": "33.4", 
     "w": "4", 
     "b": "0", 
     "lb": "5", 
     "wd": "12", 
     "nb": "1", 
     "pt": "0", 
     "l": "0", 
     "rr": "9.24", 
     "ru": "151", 
     "ro": "16.2", 
     "tg": "309", 
     "cp": { 
     "cp": "2", 
     "bls": "9", 
     "s": "1" 
     } 
     }, 
     "tz": "-04:00" 
     }, 
     "d": { 
     "a": { 
     "t": { 
     "i": "11705", 
     "a": "3", 
     "c": "Batting", 
     "dt": null, 
     "fd": "0", 
     "bd": "0", 
     "cb": "no", 
     "b": "4", 
     "r": "1", 
     "sr": "25", 
     "four": "0", 
     "six": "0", 
     "name": "Jason Mohammed" 
     } 
     } 
     } 
    }, 
    { 
     "s": { 
     "t": "1", 
     "i": "1", 
     "ps": "0", 
     "stay_live": "Yes", 
     "ld": "No", 
     "ldmsg": null, 
     "pms": "live", 
     "ed": "Power Play 3", 
     "a": { 
     "fo": "0", 
     "pp": "3", 
     "i": "6", 
     "cr": "6.16", 
     "r": "308", 
     "o": "50", 
     "w": "5", 
     "b": "3", 
     "lb": "3", 
     "wd": "7", 
     "nb": "1", 
     "pt": "0", 
     "l": "0" 
     }, 
     "tz": "-04:00" 
     } 
    } 
    ], 
    "toss": { 
    "win": "9", 
    "bat": "0", 
    "text": "xxx-xxx-xxx" 
    }, 
    "result": "0", 
    "ms": "Drinks", 
    "mt": "2", 
    "cts": "1491596158" 
    } 
    } 
} 
} 

이하는 지금까지 시도한 코드입니다.

try { 
      JSONObject jsonObject = new JSONObject(response); 

      JSONObject query = jsonObject.getJSONObject("query"); 
      JSONObject results = query.getJSONObject("results"); 
      JSONArray Scorecard = results.getJSONArray("Scorecard"); 
      for (int i = 0; i < Scorecard.length(); i++) { 

       JSONObject e = Scorecard.getJSONObject(i); 
       JSONArray past_ings = new JSONArray(e.getString("past_ings")); 

       for (int j = 0; j < past_ings.length(); j++) { 

        JSONObject f = past_ings.getJSONObject(j); 
        JSONObject getter = new JSONObject(f.getString("s")); 

        team = getter.getString("t"); 

       } 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

하지만 지금은 "S"그래서

의 "A"개체에 액세스 할 어디에서 잘못하고 있어요?

PS : 위 코드가 작동합니다.

답변

0

우선 스코어 카드은 (는) 배열이 아닙니다. 코드를 변경하고 JSON으로 테스트했습니다. 그것은 작동합니다.

try { 
     JSONObject jsonObject = new JSONObject(json); 

     JSONObject query = jsonObject.getJSONObject("query"); 
     JSONObject results = query.getJSONObject("results"); 
     JSONObject Scorecard = results.getJSONObject("Scorecard"); 

     JSONArray past_ings = Scorecard.getJSONArray("past_ings"); 

     for (int j = 0; j < past_ings.length(); j++) { 

      JSONObject f = past_ings.getJSONObject(j); 
      JSONObject getter = new JSONObject(f.getString("s")); 

      JSONObject a = getter.getJSONObject("a"); 

     } 


    } catch (JSONException e) { 
     e.printStackTrace(); 
    }