Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Formatar Json pela aplicação

Para quem quiser exibir o Json já formatado sem usar a extensão do grupo, uma alternativa é criar uma classe de configuração que implemente esta formatação.

Para isto basta no pacote br.com.alura.mvc.mudi criar a classe JSONPrettyPrintConfig:

package br.com.alura.mvc.mudi;

import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class JSONPrettyPrintConfig extends WebMvcConfigurationSupport{

    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.forEach(converter -> {
            if (converter instanceof MappingJackson2HttpMessageConverter) {
                MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
                jsonConverter.setPrettyPrint(true);
            }
        });
    }
}
2 respostas
solução!

Olá William! Tudo bem?

Muito obrigada por compartilhar uma alternativa à outra solução, muito legal ver as coisas funcionando trabalhando diretamente com a biblioteca Jackson.

Fique à vontade pra enviar outras sugestões, dúvidas e feedbacks aqui no fórum <3

Abraços e bons estudos!

Olá!

Gostaria de trazer uma alternativa melhor para essa implementação de formatação do JSON. No fim do projeto não consegui implementar o uso de interceptadores. Só hoje foi perceber que por algum motivo houve conflito entre as classes de configuração do Interceptador e do JSONPrettyPrintConfig. Para resolver o problema na classe do Interceptador adicionei a Anotação @Component, e na classe de configuração do JSON alterei para a seguinte implementação:

@Bean
     public Jackson2ObjectMapperBuilderCustomizer customJson() {
         return builder -> builder.indentOutput(true);
     }

Com isso tudo funcionou como deveria!