2013-08-26 8 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() давать мне отдельные поля объекта [0] игрока? –

+0

Вы попробовали эту функцию? он будет печатать все ключи и значение. –

+0

uhm sir, мне нужно знать отдельные значения, потому что я свяжу его с некоторыми изображениями и другими медиа. –

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 ..So, сам URL не так, и он возвращает плохой запрос ..

+0

О, да, я пропустил это, спасибо –

+0

Это мне помогло, но это не отвечает на мой вопрос –

Смежные вопросы