https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?key=D0CCA1C6B04C07BBA05F04BE6D3E8E23&match_id=173546139
这串json,为什么我用JSONObject读出来,只能取到result而且返回的是字符串,如何才能取到下面对应的一些值呢?
 
try{
         myurl = new URL("https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?key=D0CCA1C6B04C07BBA05F04BE6D3E8E23&match_id="+matchId);
            conn = myurl.openConnection();
            httpURLConn = (HttpURLConnection)conn;
            httpURLConn.setRequestMethod("GET");
            reader = new BufferedReader(new InputStreamReader(httpURLConn.getInputStream(),"gbk"));
            String lineStr = reader.readLine();
            StringBuffer totalData = new StringBuffer();
            while (lineStr!=null){
                lineStr = reader.readLine();
                totalData.append(lineStr);
            }
         String str = new String(totalData);
         str = str.replaceAll("\t", "");
         str = str.replaceAll("null", "");
         str = "{"+str;
         System.out.println(str);
            JSONObject jsary=JSONObject.fromObject(str);//格式化成json对象
            JSONObject.fromObject(str);
            //JSONArray jsary=JSONArray.fromObject(str);
matchResult  = jsary.getString("result");//这里读别的值都会报错
        }catch (Exception e){
         e.printStackTrace();
     }
JSON

解决方案 »

  1.   

    打开这个地址
    https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?key=D0CCA1C6B04C07BBA05F04BE6D3E8E23&match_id=173546139
    就是字符串
      

  2.   

    手头暂时没有用JAVA来测试的环境,我用JS测试了一下
    直接解析地址返回的代码没有反应,我把代码改了一下,如下片段
    [{
    "result": [{
    "players": [{"account_id": 4294967295}]          }]
    }]
    可以得到result对象以及players对象下面的值
    var jsObj=getJSONObj(info);
    for(var i=0,len=jsObj.length;i<len;i++){   
    var m = jsObj[i]; 
    alert(m.result[0].players[0].account_id)
    }
    感觉应该是代码格式的事
      

  3.   

    再补充一下这一点:
    为什么我用JSONObject读出来,只能取到result而且返回的是字符串因为你用的是:jsary.getString("result") getString方法肯定是返回字符串的,得用取得json对象的方法。取得result的json对象,然后继续取players对象就可以了。现在返回的是字符串,自然就没办法继续向下取了。