如何使用Spring RestTemplate将Riot Api请求映射到对象



我正在使用Spring的RestTemplate将RiotAPI的JSON响应转换为我的BasicSummoner对象。我认为问题在于将JSON响应转换为我的对象。调用getForObject()后,对象的所有字段都为null/空。感谢任何帮助,因为这是我的第一个Spring项目,也是第一次使用Riot的API。

我已经验证了JSON响应是正确的,如下所示:

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

我的请求如下:

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;
}

对象BasicSummoner看起来是这样的:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)公共类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;
}

}

您的JSON不是单个Object,而是另一个Object中的Object
这意味着,要像现在这样使用代码,需要打开内部Object,或者将结构更改为其他结构
响应似乎符合Map<String, BasicSummoner>

相关内容

  • 没有找到相关文章

最新更新