2016-07-22 5 views
0

Map Ich verwende Spring's RestTemplate, um eine JSON-Antwort von RiotAPI in mein BasicSummoner-Objekt zu konvertieren. Ich glaube, das Problem besteht darin, die JSON-Antwort in mein Objekt zu konvertieren. Nach dem Aufruf von getForObject() sind alle Felder des Objekts leer/leer. Jede Hilfe wird geschätzt, da dies mein erstes Frühjahrsprojekt ist und ich das erste Mal Riots API benutze.Wie Riot API-Anfrage zu einem Objekt mit Spring RestTemplate

ich vergewissert haben, dass die JSON resonse korrekt ist und sieht wie folgt aus:

{ 
 
    "riotschmick": { 
 
    "id": 585897, 
 
    "name": "RiotSchmick", 
 
    "profileIconId": 782, 
 
    "summonerLevel": 30, 
 
    "revisionDate": 1469155559000 
 
    } 
 
}

Meine Anfrage wie folgt aussieht:

public BasicSummoner requestBasicSummoner() { 
    RestTemplate template = new RestTemplate(); 
    String mes = "https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/RiotSchmick?api_key=<my-api-key>"; 
    BasicSummoner summoner = template.getForObject(mes, BasicSummoner.class); 
    log.info(summoner.toString()); 
    return summoner; 
} 

Und das Objekt BasicSummoner aussieht dies:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 

@JsonIgnoreProperties (ignoreUnknown = true) public class BasicSummoner {

private long id; 
private String name; 
private int profileIconId; 
private long revisionDate; 
private long summonerLevel; 

public BasicSummoner() { 
} 

public long getId() { 
    return id; 
} 

public void setId(long id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getProfileIconId() { 
    return profileIconId; 
} 

public void setProfileIconId(int profileIconId) { 
    this.profileIconId = profileIconId; 
} 

public long getRevisionDate() { 
    return revisionDate; 
} 

public void setRevisionDate(long revisionDate) { 
    this.revisionDate = revisionDate; 
} 

public long getSummonerLevel() { 
    return summonerLevel; 
} 

public void setSummonerLevel(long summonerLevel) { 
    this.summonerLevel = summonerLevel; 
} 

@Override 
public String toString() { 
    return "id=" + id + ", name=" + name + " , summoner level=" + summonerLevel; 

} 

}

Antwort

2

Ihre JSON ist kein einzelnes Objekt, sondern ein Objekt in einem anderen Objekt.
Dies bedeutet, dass Sie das innere Objekt auspacken oder die Struktur in etwas anderes ändern müssen, um Ihren Code so zu verwenden, wie er jetzt ist.
Die Antwort scheint zu passen Map<String, BasicSummoner>