2016-07-22 3 views
0

JSON応答をRiotAPIからBasicSummonerオブジェクトに変換するには、SpringのRestTemplateを使用しています。問題はJSONレスポンスを自分のオブジェクトに変換することだと思います。 getForObject()を呼び出した後、オブジェクトのフィールドはすべてnull /空です。これが私の最初のSpringプロジェクトであり、初めてRiotのAPIを使用しているので、何か助けに感謝しています。Spring RestTemplateでオブジェクトに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 =真) パブリッククラス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; 

} 

}

答えて

2

あなたJSONは、単一のオブジェクトではなく別のオブジェクト内のオブジェクト。
これは、コードをそのまま使用するためには、内部オブジェクトをアンラップするか、構造体を別のものに変更する必要があることを意味します。
応答がaに合っているようです。Map<String, BasicSummoner>

関連する問題