2014-01-08 4 views
0

지도에서 특정 값을 가져 오려고합니다.내부 JSON지도를 가져 오는 방법

나는 "QUEUETYPE"를, "leaguePoints", "계층", "순위"에 할당 된 값을 얻을 필요 "RANKED_SOLO_5x5"& & "playerOrTeamName": "Invicterr을".

아래 코드를 추가했습니다.

항목을 반복해야한다고 생각합니다. [],하지만 어떻게 해야할지 잘 모릅니다. 총 JSON 초보자와 Java 개발자.

지도 :

"32303008": { 
    "queue": "RANKED_SOLO_5x5", 
    "name": "Sejuani's Berserkers", 
    "entries": [ 
    { 
     "isHotStreak": false, 
     "isFreshBlood": false, 
     "leagueName": "Sejuani's Berserkers", 
     "miniSeries": { 
      "progress": "LWN", 
      "target": 2, 
      "losses": 1, 
      "timeLeftToPlayMillis": 0, 
      "wins": 1 
     }, 
     "isVeteran": false, 
     "tier": "PLATINUM", 
     "lastPlayed": 0, 
     "playerOrTeamId": "21747474", 
     "leaguePoints": 100, 
     "rank": "V", 
     "isInactive": false, 
     "queueType": "RANKED_SOLO_5x5", 
     "playerOrTeamName": "sunchasee", 
     "wins": 127 
    }, 
    { 
     "isHotStreak": false, 
     "isFreshBlood": false, 
     "leagueName": "Sejuani's Berserkers", 
     "isVeteran": false, 
     "tier": "PLATINUM", 
     "lastPlayed": 1389198358615, 
     "playerOrTeamId": "32303008", 
     "leaguePoints": 64, 
     "rank": "V", 
     "isInactive": false, 
     "queueType": "RANKED_SOLO_5x5", 
     "playerOrTeamName": "Invicterr", 
     "wins": 462 
    } 
    ], 
    "tier": "PLATINUM" 
} 

내 코드 :

for (Map.Entry<String, League> entry : leagues.entrySet()) 
{ 
try 
{ 
    if(Integer.parseInt(entry.getKey()) == 32303008) 
     { 
      System.out.println(entry.getKey() + "|" + entry.getValue()); 
     } 
} 
catch(Exception e){} 
} 
+0

1 단계) JSON 문자열을 12 개의 서로 다른 툴킷 중 하나를 사용하여 중첩 된지도 및 배열 집합으로 변환합니다. 2 단계) 맵 엔트리 "32303008", 맵 엔트리 "엔트리", 배열 요소 0, 맵 엔트리 "leaguePoints"를 통한 "체인"액세스. 기타 값은 기타. 반복 할 필요가 없습니다. –

답변

0

내가 JSON Simple 같은 것을 사용하는 것이 좋습니다 것입니다. 이렇게하면 JSON을보다 쉽게 ​​작업 할 수있는 Java 객체로 변환 할 수 있습니다.

0

의사 코드 :

Map jsonMain = JSONParser.parse(myJSONSourceString); 
Map numberedEntry = (Map)(jsonMain.get("3203008")); 
List entries = (List)(numberedEntry.get("entries")); 
for (int i = 0; i < entries.size(); i++) { 
    Map theEntry = (Map)(entries.get(0)); 
    String queueType = (String)(theEntry.get("queueType")); 
    String playerOrTeamName = (String)(theEntry.get("playerOrTeamName")); 
    if (queueType.equals("RANKED_SOLO_5x5") && (playerOrTeamName.equals("Invicterr")) { 
     Number leaguePoints = (Number)(theEntry.get("leaguePoints")); 
     int leaguePointsValue = leaguePoints.intValue(); 
     String tier = (String)(theEntry.get("tier")); 
     String rank = (String)(theEntry.get("rank")); 
     // Do something with the values 
     break; 
    } 
} 

정확한 유형과 메소드 이름 (주조가 필요한지 여부를) 사용하는 JSON 키트에 따라 달라집니다.

관련 문제