java – Spring:RestTemplate返回null对象

使用以下GET请求:

ResponseEntity<String> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, String.class );
entity.getBody();

返回一个JSON字符串,如下所示:

{"userRegistrations":[{"userRegistrationToken":"fb398972","userRegistrationTokenAlias":"87f15f8"}]}

但我想用一个没有字符串的对象来完成这项工作.因此,使用下面的代码,我收到一个UserRegistrations对象,其中包含一个null UserTokenResponse List

ResponseEntity<UserRegistrations> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, UserRegistrations.class );
entity.getBody();

我的域类看起来像这样:

public class UserRegistrations {
    List<UserTokenResponse> userRegistrationList;
    //..getters and setters
}

public class UserTokenResponse {
   private String userRegistrationToken;
   private String userRegistrationTokenAlias;
   //getters and setters
}

我错过了什么?

最佳答案 假设您正在使用Jackson,RestTemplate会自动注册MappingJackson2HttpMessageConverter,它将基础ObjectMapper配置为忽略未知属性.

JSON对象具有名为userRegistrations的单个属性,而您的Java类具有名为userRegistrationList的单个属性.他们不匹配.

它们需要匹配,或者您需要添加属性的@JsonProperty注释,以使Jackson将其序列化/解析为userRegistrations.

点赞