Spring无法序列化ImmutableListMultiMap

时间:2019-05-22 17:34:32

标签: json spring-mvc guava json-serialization

我们在Spring应用程序中有一个控制器,该控制器返回一个具有ImmutableListMultimap作为属性的对象。对象本身被包装在ResponseEntity中。当对象返回给客户端时,序列化正确发生,除了ImmutableListMultimap被序列化为“空:false”。

public ResponseEntity<?> getFoo(@NonNull final String abc) {
   Map<String, Object> resultMap = new HashMap();
   Sample sample = getSample() /* getSample returns an object of type 
   Sample */
   resultMap.put("result", sample);
   return new ResponseEntity(resultMap, HttpStatus.OK);
}

这是Sample类的样子

public class Sample {
   String a;
   ImmutableListMultimap<String, String> map;
}

我正在研究以下讨论:Enable json serialization of Multimap in Spring Boot Project,并尝试使用GuavaModule在Configuration类中创建ObjectMapper bean,以及直接创建guavamodule bean。

@Configuration
@EnableAspectJAutoProxy
public class mainConfig {
    @Bean
    ObjectMapper customizeJacksonConfiguration() {
        ObjectMapper om = new ObjectMapper();
        om.registerModule(new GuavaModule());
        return om;
    }
}
@Bean
    public Module guavaModule() {
        return new GuavaModule();
    }

出于调试目的,我还将ImmutableListMultimap更改为ArrayListMultimap,但是仍然无法正确进行序列化。

我在上面标记的答案中的方法适用于spring-boot应用程序,但我们的方法不是spring-boot应用程序,所以这可能就是为什么它不起作用的原因。

我想我将不得不添加一个序列化器(杰克逊,番石榴或其他)来序列化多图。有人可以建议在这种情况下使用哪个,以及在哪里添加序列化程序吗? 请建议是否还有其他方法可以实现此序列化。

我已将代码最小化,但尝试使其足以满足用例的要求。请让我知道是否需要添加其他代码,我将提供它。

0 个答案:

没有答案