2016-11-20 154 views
1

我試圖用RestTemplate調用Web服務,目前我使用的對象類型,而不是一個具體的用戶定義一個這是我想做的事情。RestTemplate映射到對象

目前從Web服務的響應是:

{Locales=[{Code=ar-AE, Name=العربية (الإمارات العربية المتحدة)}, {Code=az-AZ, Name=Azərbaycan­ılı (Azərbaycan)}, {Code=bg-BG, Name=български (България)}]} 

我目前這樣做:

Object locales = restTemplate.getForObject(localeUrl, Object.class, apiKey); 

這是我希望能夠把它映射到我已經定義一個類,但不知道我的班級應該如何佈置,我的班級目前看起來像這樣:

@Data 
@JsonIgnoreProperties(ignoreUnknown = true) 
@XmlRootElement(name = "Locales") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Locales { 
    private List<Locale> Locales = new ArrayList<>(); 

    private Locales(){}; 

    public List<Locale> getLocales() { 
     return Locales; 
    } 

    public void setLocales(ArrayList<Locale> newLocales) { 
     this.Locales = newLocales; 
    } 
} 

@Data 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class Locale { 
    private String Code; 
    private String Name; 

    private Locale(){} 

    public String getCode() { 
     return this.Code; 
    } 

    public void setCode(String Code) { 
     this.Code = Code; 
    } 

    public String getName() { 
     return this.Name; 
    } 

    public void setName(String Name) { 
     this.Name = Name; 
    } 
} 
+0

您需要創建類將與輸出映射。更好地閱讀本教程 - https://spring.io/guides/gs/consuming-rest/ –

+0

嗨@VikasSachdeva應我的類是包含其中包含的代碼和名稱的對象列表的類? – DorkMonstuh

回答

1

使用belo調用API的W代碼 -

Locales locales = restTemplate.getForObject(localeUrl, Locales.class, apiKey); 

創建一個class語言環境 -

@XmlRootElement(name = "Locales") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Locales{ 
    private List<Locale> locales = new ArrayList<>(); 

    // getter and setter 

} 
+0

我試過這個,並且在傾倒出日誌的時候得到了Locales(locales = [])。我將更新上面的代碼 – DorkMonstuh

+0

使用公共訪問說明符在您的Locales類中創建getter和setter方法。我在評論中寫回答,以創建getter和setter。另外,你的Locale類應該有getter和setter –

+0

另一種方法是聲明帶有公共訪問說明符的字段。但是,這不是建議的方式。 –