响应结果
对于返回类型为数组的 如图所示比如A… 我们可以通过包装类加List<包装类> 来获取. 但是如果是B类型的,直接通过包装类数组获取会抛出异常…Unrecognized field "wf" (XXXXX.class), not marked as ignorable
解决
对于A类, 只需要配置 List<Web> 对象数据进行承接, RestTemplate 就可以帮我们序列化
{
@JsonProperty("web")
private List<Web> web;
}
class Web {
@JsonProperty("key")
public String key;
@JsonProperty("value")
public List<String> value;
}
对于B类, 则需要重写 RestTemplate 的配置…并配合 @JsonRootName 注解进行序列化和反序列化的配置 RestTemplate 配置, 添加 objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 和 objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
@Configuration
public class RestTemplateConfig {
@Bean
RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder, ObjectMapper objectMapper) {
objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
MappingJackson2HttpMessageConverter httpMessageConverter = new MappingJackson2HttpMessageConverter();
httpMessageConverter.setObjectMapper(objectMapper);
restTemplateBuilder.messageConverters(httpMessageConverter);
return restTemplateBuilder.build();
}
}
修改包装类, 添加 @JsonRootName
{
@JsonProperty("wfs")
public List<Wf> wfs;
}
@JsonRootName("wf")
class Wf {
@JsonProperty("name")
public String name;
@JsonProperty("value")
public String value;
}
|