【问题标题】:MappingJackson2HttpMessageConverter from xml to java configuration MalfunctioningMappingJackson2HttpMessageConverter 从 xml 到 java 配置故障
【发布时间】:2017-12-14 20:18:12
【问题描述】:

我将我的应用程序从基于 xml 的配置更改为基于 java 的配置。在基于 java 的配置中,我得到以下错误,我在基于 xml 的配置中没有得到。我在 java 配置中缺少什么?请帮忙。

抛出此错误的方法:

 response = restTemplate.exchange(uri.toUri(), HttpMethod.GET, entity, UserProfiles.class);

错误:

nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.mycompany.wsg.profile.model.v26.gen.ListItemDef: no String-argument constructor/factory method to deserialize from String value ('U-71155f93-8413-457c-a045-256dc6ab0a93@poims001.ucc2.ucc.stgsip.t-mobile.com')

【问题讨论】:

  • 检查响应是一个有效的 JSON 并且你的 UserProfile 类有默认(无参数)构造函数。
  • pojo 不是问题;因为基于 xml 的配置中的相同类工作正常。我唯一做的就是将 xml 文件更改为 java.xml 文件。代码库没有被触及;但是基于 xml 的配置仍然有效,但是 java 抛出了这个错误。我的直觉是我缺少一个 java 配置
  • 我看起来反序列化列表项存在问题。到目前为止,我所阅读的与我的问题相关的所有帖子都是在反序列化列表时。我也尝试反序列化列表

标签: java jackson resttemplate


【解决方案1】:

问题肯定是 java 配置。以下是我的解决方法:

public class SpringWebConfig extends WebMvcConfigurationSupport {

  ....//unrelated configuration here

 @Bean
    public RestTemplate restTemplate()
    {
        RestTemplate restTemplate =  new RestTemplate(httpClientFactory());

        restTemplate.setMessageConverters(getMessageConverters());

        return restTemplate;
    }


 @Override
    public void configureMessageConverters(
      List<HttpMessageConverter<?>> converters) {

        converters.add(createXmlHttpMessageConverter());
        converters.add(new MappingJackson2HttpMessageConverter());

        super.configureMessageConverters(converters);
    }

    private HttpMessageConverter<Object> createXmlHttpMessageConverter() {
        MarshallingHttpMessageConverter xmlConverter = 
          new MarshallingHttpMessageConverter(jaxb2Marshaller(), jaxb2Marshaller());

        return xmlConverter;
    }
}

希望这对其他人有帮助

【讨论】:

    猜你喜欢
    • 2016-08-22
    • 2020-06-05
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多