尝试序列化Guava的ImmutableMap时获取JacksonMappingException

时间:2019-07-22 18:49:08

标签: java spring-mvc jackson guava

所以我有一个Spring MVC应用程序,它使用JSON作为响应主体公开了REST API。同时,一些较低层的服务返回集合或地图,其实现使用Guava来提供它们的不可变实现。当Spring使用Jackson将响应对象转换为JSON字符串时,就会出现问题。我得到这个奇怪的例外:

HttpMessageNotWritableException could not write content: [no message for java.lang.NullPointerException]; nested exception is com.fasterxml.jackson.databind.JsonMappingException

调试时,我看到NullPointerException尝试访问其com.fasterxml.jackson.databind.ser.std.MapSerializerkeySerializer上升,这是空的。我似乎无法配置或绕过(甚至不了解发生了什么)。

我还尝试通过这种方式注册GuavaModule(来自jackson-databind-guava)项目,但没有运气:

@Configuration
@EnableWebMvc
public class Conf extends WebMvcConfigurerApdapter {

    @Autowired
    private ObjectMapper mapper;

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        mapper.registerModule(new GuavaModule());
        messageConverter.setObjectMapper(mapper);
        converters.add(messageConverter);
    }
// ...

一些背景信息:使用spring-webmvc-4.3.0.RELEASEjackson-core-2.8.9(由于某种原因在类路径中还有几个1.9.2 jackson库)和guava-23.63-jre

0 个答案:

没有答案