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

标签 java json spring spring-mvc riot-games-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) 公共(public)类 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 不是单个对象,而是另一个对象中的对象。
这意味着要按现在的方式使用代码,您需要解开内部对象,或将结构更改为其他内容。
该响应似乎适合 Map<String, BasicSummoner>

关于java - 如何使用 Spring RestTemplate 将 Riot Api 请求映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38517574/

相关文章:

javascript - 谁能帮我简化一下?

json - 如何在 Spring 中包装 JSON 响应

java - 从外部 bean 注入(inject) bean 属性

JAVA - 实例化 Scala 案例类

java - ArrayList中对象属性值出现的频率

javascript - 如何在绘制第一个 'n' 点后向 highcharts 添加新点?

java - 如何配置pom.xml文件-spring和hibernate

java - OneToMany 主键列错误

java - 从网络摄像头代码将图片上传到 Twitter 每次都上传相同的照片

Java动态事务代理-连接初始化