首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

获取界面返回的json有关问题

2013-04-21 
获取界面返回的json问题【求助】https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?key

获取界面返回的json问题【求助】
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
[解决办法]
手头暂时没有用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)
}
感觉应该是代码格式的事
[解决办法]
再补充一下这一点:
为什么我用JSONObject读出来,只能取到result而且返回的是字符串

因为你用的是:jsary.getString("result") getString方法肯定是返回字符串的,得用取得json对象的方法。取得result的json对象,然后继续取players对象就可以了。现在返回的是字符串,自然就没办法继续向下取了。

热点排行