如何在 Spring 中使用 Eclipse collection 在 Java 中启动 ResponseEnity
How to use Eclipse collection in Spring boot ResponseEnity in Java
所以我需要帮助使用 java eclipse collections 作为使用 spring 引导响应实体 JSON 的响应的一部分。我试过使用通用方式,但我收到一个响应异常错误,它无法转换为 java ArrayList 类型,所以任何人都可以提供一个使用 eclipse collections 数据而不是 [ 的正常休息端点的示例=18=] collections 列表?
这是一个示例代码
@GetMapping("/list")
public ResponseEntity<MutableList<Person>> getData() {
return ResponseEntity.ok(Map.of(
"success", true,
"data", Map.of(
"users", personService.getUsers()
)
));
}
启用 eclipse-collections Jackson 模块的说明,该模块为 Eclipse 集合类型添加 Json 序列化支持:
默认情况下Spring MVC MappingJackson2HttpMessageConverter 将使用 Jackson2ObjectMapperBuilder 创建自己的带有默认选项的 ObjectMapper。根据 Spring Boot docs 76.3 自定义 Jackson ObjectMapper 章节:
Any beans of type com.fasterxml.jackson.databind.Module are
automatically registered with the auto-configured
Jackson2ObjectMapperBuilder and are applied to any ObjectMapper
instances that it creates. This provides a global mechanism for
contributing custom modules when you add new features to your
application.
所以将 eclipse 集合模块注册为 bean 就足够了:
@Bean
public EclipseCollectionsModule eclipseCollectionsModule()
{
return new EclipseCollectionsModule();
}
用以下代码替换您的 return 表达式:
return ResponseEntity.ok(personService.getUsers().stream().collect(Collectors2.toList()));
所以我需要帮助使用 java eclipse collections 作为使用 spring 引导响应实体 JSON 的响应的一部分。我试过使用通用方式,但我收到一个响应异常错误,它无法转换为 java ArrayList 类型,所以任何人都可以提供一个使用 eclipse collections 数据而不是 [ 的正常休息端点的示例=18=] collections 列表?
这是一个示例代码
@GetMapping("/list")
public ResponseEntity<MutableList<Person>> getData() {
return ResponseEntity.ok(Map.of(
"success", true,
"data", Map.of(
"users", personService.getUsers()
)
));
}
启用 eclipse-collections Jackson 模块的说明,该模块为 Eclipse 集合类型添加 Json 序列化支持:
默认情况下Spring MVC MappingJackson2HttpMessageConverter 将使用 Jackson2ObjectMapperBuilder 创建自己的带有默认选项的 ObjectMapper。根据 Spring Boot docs 76.3 自定义 Jackson ObjectMapper 章节:
Any beans of type com.fasterxml.jackson.databind.Module are automatically registered with the auto-configured Jackson2ObjectMapperBuilder and are applied to any ObjectMapper instances that it creates. This provides a global mechanism for contributing custom modules when you add new features to your application.
所以将 eclipse 集合模块注册为 bean 就足够了:
@Bean
public EclipseCollectionsModule eclipseCollectionsModule()
{
return new EclipseCollectionsModule();
}
用以下代码替换您的 return 表达式:
return ResponseEntity.ok(personService.getUsers().stream().collect(Collectors2.toList()));