2016-07-22 3 views
0

JSON 응답을 RiotAPI에서 내 BasicSummoner 객체로 변환하려면 Spring의 RestTemplate을 사용하고 있습니다. 문제는 JSON 응답을 내 개체로 변환하는 것입니다. getForObject()를 호출하면 객체의 모든 필드가 null/비어 있습니다. Riot의 API를 사용한 첫 번째 Spring 프로젝트 및 처음이므로 도움이 될만한 의견이 있습니다.Spring RestTemplate을 사용하여 Riot API 요청을 객체에 매핑하는 방법

나는이 같은 JSON의 resonse가 올바른지 확인하고 보이는 한 : 객체 BasicSummoner의 모습

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

그리고 :

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

내 요청은 다음과 같습니다 이 :

,623,210

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

} 

}

답변

2

귀하의 JSON은 하나의 객체가 아니라 다른 개체 내부 개체입니다.
이제 코드를 그대로 사용하려면 내부 객체의 포장을 풀거나 구조를 다른 것으로 변경해야합니다.
응답이 다음과 같이 나타납니다. Map<String, BasicSummoner>

관련 문제