我试图从地图中获取特定值。
我需要将值分配给“leaguePoints”,“tier”,“rank”,for “queueType”:“RANKED_SOLO_5x5”&& “playerOrTeamName”:“Invicterr”。
我在下面尝试添加了代码。
我想我需要迭代条目:[],但我不知道该怎么做。 我是一个全面的JSON新手和Java begginer。
地图:
"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 :(得分:0)
我建议使用类似JSON Simple的内容。这会将您的JSON转换为更易于使用的Java对象。
答案 1 :(得分: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工具包。