Generate YAML format response in springboot

Viewed 1087

I want to generate YAML format type response using Spring boot. can you please help me here to get it out?

1 Answers

Ensure you have the following dependency on the classpath:

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

Then define your own HttpMessageConverter:

class MappingJackson2YamlHttpMessageConverter extends AbstractJackson2HttpMessageConverter {

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

Expose it as a Spring @Bean:

@Configuration
public class JacksonYamlConfig {

    @Bean
    public MappingJackson2YamlHttpMessageConverter yamlHttpMessageConverter() {

        YAMLMapper mapper = new YAMLMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        return new MappingJackson2YamlHttpMessageConverter(mapper);
    }
}

And finally configure your controller method to produce YAML:

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