When using Spring MVC for REST, how do you enable Jackson to pretty-print rendered JSON?

后端 未结 10 541
遥遥无期
遥遥无期 2020-12-04 14:25

While developing REST services using Spring MVC, I would like render JSON \'pretty printed\' in development but normal (reduced whitespace) in production.

10条回答
  •  佛祖请我去吃肉
    2020-12-04 14:56

    Might I suggest this approach, it is valid with Spring 4.0.x and possibly older versions.

    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import java.util.List;
    import org.springframework.context.annotation.Bean;
    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.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Configuration
    @EnableWebMvc    
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
    
        @Bean
        public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
            MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
            mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper());
            return mappingJackson2HttpMessageConverter;
        }
    
        @Bean
        public ObjectMapper objectMapper() {
            ObjectMapper objMapper = new ObjectMapper();
            objMapper.enable(SerializationFeature.INDENT_OUTPUT);
            return objMapper;
        }
    
        @Override
        public void configureMessageConverters(List> converters) {
            super.configureMessageConverters(converters);        
            converters.add(mappingJackson2HttpMessageConverter());
        }
    
    }
    

    Thanks to Willie Wheeler for the solution: Willie Wheeler's Spring blog

提交回复
热议问题