Spring Boot忽略jsonPrettyPrint = true

时间:2014-10-01 07:31:25

标签: json spring jackson spring-boot pretty-print

使用Spring Boot 1.1.6.RELEASE我无法从我的MVC控制器获得JSON打印 - 这应该花费不到一分钟(而且我们在之前的Spring项目中已经无数次配置)已经采用了一些小时。

我尝试过各种各样的事情,包括:

1)使用application.properties中记录的自动配置

http.mappers.jsonPrettyPrint=true

无效

2)创建我自己的Jackson实例

@Bean
MappingJackson2HttpMessageConverter jacksonMessageConverter() {
    MappingJackson2HttpMessageConverter mc = ...
    mc.setPrettyPrint(**true**);
    return mc;
}

无效

3)注入容器ObjectMapper并对其进行配置

@Inject ObjectMapper objectMapper;
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

objectMapper.withDefaultPrettyPrinter();

两者都没有效果

4)关闭弹簧执行器(如果是覆盖配置)

无效

5)检查,双重检查,三重检查我正在呼叫正确的主机,关闭以确认连接被拒绝,更改输出以确认代码是我正在运行的代码

仍无法配置JSON Pretty打印 - 有没有人看过这个,是否与Spring IO(1.0.2.RELEASE)或Jackson(fastxml jackson-core 2.3.4)中的副作用有关?

1 个答案:

答案 0 :(得分:2)

你有没有这样试过:

 @Configuration
public class TimesheetMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

        StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
        stringConverter.setWriteAcceptCharset(false);
        converters.add(stringConverter);

        converters.add(new ByteArrayHttpMessageConverter());
        converters.add(new ResourceHttpMessageConverter());
        converters.add(new SourceHttpMessageConverter<Source>());
        converters.add(new AllEncompassingFormHttpMessageConverter());

        converters.add(jackson2Converter());
    }

    @Bean
    public MappingJackson2HttpMessageConverter jackson2Converter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setObjectMapper(objectMapper());
        return converter;
    }

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
        return objectMapper;
    }
}