2013-08-26 89 views
0

http://pastie.org/8269975。如果你看我的代碼,我不知道如何訪問像account_id,hero_id等個人領域。我有這個代碼。使用JSON陣列

JSONObject match = getMatchDetails("281699681"); 

如果我想訪問像account_id這些單獨的字段,則此代碼不起作用。

int a = match.result.players[0].account_id; 

請幫助我,如果你想看看JSON腳本,這裏的鏈接 https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=281699681&key=8F48DE9EBF9C9EA121A6A9EF2E30B7C7

回答

0

試試這個方法動態迭代任何JSON對象。

private void parseJson(JSONObject data) { 

     if (data != null) { 
      Iterator<String> it = data.keys(); 
      while (it.hasNext()) { 
       String key = it.next(); 

       try { 
        if (data.get(key) instanceof JSONArray) { 
         JSONArray arry = data.getJSONArray(key); 
         int size = arry.length(); 
         for (int i = 0; i < size; i++) { 
          parseJson(arry.getJSONObject(i)); 
         } 
        } else if (data.get(key) instanceof JSONObject) { 
         parseJson(data.getJSONObject(key)); 
        } else { 
         System.out.println("" + key + " : " + data.optString(key)); 
        } 
       } catch (Throwable e) { 
        System.out.println("" + key + " : " + data.optString(key)); 
        e.printStackTrace(); 

       } 
      } 
     } 
    } 
+0

錯了,我不明白這一點,先生。那parseJson()函數會給我player [0]對象的單個字段嗎? –

+0

你有試過這個功能嗎?它會打印所有的鍵和值。 –

+0

uhm先生,我需要知道個人的價值觀,因爲我會將它與一些圖片和其他媒體聯繫起來。 –

1

JSON使用JavaScript對象,而不是Java對象,因此你不能直接訪問成員,好像他們是Java對象。您需要使用類似GSON的內容來在JSON表示和Java對象表示之間進行轉換。

0

首先,嘗試更換線路,

String MatchDetailsURL = "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id"+ matchID + "=&key=" + SteamWebAPIKey; 

用,

String MatchDetailsURL = "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id="+ matchID + "&key=" + SteamWebAPIKey; 

在你的代碼和嘗試。

BCS,而不是給match_id="+ matchID + "&key你給match_id"+ matchID + "=&key ..所以,URL本身是錯誤的,它返回一個錯誤的請求..

+0

噢,我忽略了那個,謝謝 –

+0

它幫助了我,但它不能回答我的問題 –