我们在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应用程序,所以这可能就是为什么它不起作用的原因。
我想我将不得不添加一个序列化器(杰克逊,番石榴或其他)来序列化多图。有人可以建议在这种情况下使用哪个,以及在哪里添加序列化程序吗? 请建议是否还有其他方法可以实现此序列化。
我已将代码最小化,但尝试使其足以满足用例的要求。请让我知道是否需要添加其他代码,我将提供它。