With the below GET request:
ResponseEntity<String> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, String.class );
entity.getBody();
returns a JSON String like this:
{"userRegistrations":[{"userRegistrationToken":"fb398972","userRegistrationTokenAlias":"87f15f8"}]}
But I want to make this work with an object not with a string. So with the code below I receive a UserRegistrations object with a null UserTokenResponse List
ResponseEntity<UserRegistrations> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, UserRegistrations.class );
entity.getBody();
And my domain class looks like this:
public class UserRegistrations {
List<UserTokenResponse> userRegistrationList;
//..getters and setters
}
public class UserTokenResponse {
private String userRegistrationToken;
private String userRegistrationTokenAlias;
//getters and setters
}
What am I missing?
Assuming you're using Jackson, RestTemplate
automatically registers a MappingJackson2HttpMessageConverter
which configures the underlying ObjectMapper
to ignore unknown properties.
The JSON object has a single attribute named userRegistrations
, whereas your Java class has a single attribute named userRegistrationList
. They don't match.
They need to match, or you need to add a @JsonProperty
annotation of the attribute to make Jackson serialize/parse it as userRegistrations
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With