【问题标题】:Generate YAML format response in springboot在 Spring Boot 中生成 YAML 格式响应
【发布时间】:2019-10-16 13:37:51
【问题描述】:

我想使用 Spring boot 生成 YAML 格式类型的响应。你能帮我把它弄出来吗?

【问题讨论】:

    标签: spring-boot yaml


    【解决方案1】:

    确保您对类路径具有以下依赖性:

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    

    然后定义你自己的HttpMessageConverter:

    class MappingJackson2YamlHttpMessageConverter extends AbstractJackson2HttpMessageConverter {
    
        MappingJackson2YamlHttpMessageConverter(ObjectMapper objectMapper) {
            super(objectMapper, MediaType.parseMediaType("application/x-yaml"));
        }
    }
    

    将其公开为 Spring @Bean:

    @Configuration
    public class JacksonYamlConfig {
    
        @Bean
        public MappingJackson2YamlHttpMessageConverter yamlHttpMessageConverter() {
    
            YAMLMapper mapper = new YAMLMapper();
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
    
            return new MappingJackson2YamlHttpMessageConverter(mapper);
        }
    }
    

    最后配置你的控制器方法来生成 YAML:

    @GetMapping(produces = "application/x-yaml")
    public ResponseEntity<Foo> getFoo() {
        ...
    }
    

    【讨论】:

    • 服务器启动失败实例化[com/test/api/config.MappingJackson2YamlHttpMessageConverter]:工厂方法'yamlHttpMessageConverter'抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/TSFBuilder
    • @Vbr 您似乎缺少来自 Jackson 核心的一些依赖项。
    • 非常感谢@cassiomolin,在为Jackson核心添加pom依赖后它正在工作。
    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2020-08-08
    • 2019-03-04
    • 2020-11-09
    • 2019-09-11
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多