春季:RestTemplate返回空对象

Spr*_*ing 6 java spring resttemplate

使用以下GET请求:

ResponseEntity<String> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, String.class );
entity.getBody();
Run Code Online (Sandbox Code Playgroud)

返回这样的JSON字符串:

{"userRegistrations":[{"userRegistrationToken":"fb398972","userRegistrationTokenAlias":"87f15f8"}]}
Run Code Online (Sandbox Code Playgroud)

但是我想使该对象与字符串一起工作。因此,使用下面的代码,我收到一个带有空UserTokenResponse列表的UserRegistrations对象

ResponseEntity<UserRegistrations> entity = restTemplate.exchange(uri, HttpMethod.GET, requestEntity, UserRegistrations.class );
entity.getBody();
Run Code Online (Sandbox Code Playgroud)

我的域类如下所示:

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

public class UserTokenResponse {
   private String userRegistrationToken;
   private String userRegistrationTokenAlias;
   //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我想念什么?

JB *_*zet 7

假设您正在使用 Jackson,会RestTemplate自动注册 a MappingJackson2HttpMessageConverter,它将底层配置ObjectMapper为忽略未知属性。

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

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

  • 人们会认为这样的事情会被记录在某个地方,或者抛出异常。但它只是默默地失败并返回 `null`。 (3认同)
  • @milosmns - 如果您想在值不匹配时看到错误,请从 POJO 类中删除“@JsonIgnoreProperties(ignoreUnknown = true)”。 (2认同)