DorkMonstuh
DorkMonstuh

Reputation: 851

RestTemplate mapping to object

I am trying to use RestTemplate to call a webservice, currently I am using the Object type rather than a concrete user defined one which is what I want to do.

Currently the response from the web service is:

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

I am currently doing this:

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

which is I want to be able to map it to a class that I have defined, but not sure how my class should be laid out, my class currently looks like this:

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

Upvotes: 1

Views: 1809

Answers (1)

Vikas Sachdeva
Vikas Sachdeva

Reputation: 5813

Use below code for calling API -

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

Create one class Locales -

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

    // getter and setter

}

Upvotes: 1

Related Questions