0

Spring の RestTemplate を使用して、RiotAPI からの JSON 応答を BasicSummoner オブジェクトに変換ています。問題は、JSON 応答をオブジェクトに変換することにあると思います。getForObject() を呼び出した後、オブジェクトのフィールドはすべて null/空です。これは私の最初の Spring プロジェクトであり、Riot の API を使用するのは初めてです。

JSON resonse が正しいことを確認しました。次のようになります。

{
  "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 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;

}

}

4

1 に答える 1

1

JSON は単一のオブジェクトではなく、別のオブジェクト内のオブジェクトです。
つまり、コードをそのまま使用するには、内側のオブジェクトをアンラップするか、構造を別のものに変更する必要があります。
応答はMap<String, BasicSummoner>

于 2016-07-22T21:18:50.100 に答える