如何使用Spring Batch将数据库输出美化打印写入JSON文件
解决方案
JsonFileItemWriter本身没有直接提供美化输出的配置项,该能力需要通过配置其依赖的JSON序列化组件实现:默认使用的JacksonJsonObjectMarshaller采用无特殊配置的ObjectMapper,没有开启缩进输出特性,你只需要自定义配置ObjectMapper后注入即可,修改后的代码如下:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import org.springframework.batch.item.json.JacksonJsonObjectMarshaller; // 其余包导入保持不变 @Bean public JsonFileItemWriter<Trade> jsonFileItemWriter() { // 初始化自定义配置的ObjectMapper,开启缩进输出 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // 将自定义ObjectMapper注入到JacksonJsonObjectMarshaller JacksonJsonObjectMarshaller<Trade> marshaller = new JacksonJsonObjectMarshaller<>(); marshaller.setObjectMapper(objectMapper); return new JsonFileItemWriterBuilder<Trade>() .jsonObjectMarshaller(marshaller) .resource(new ClassPathResource("trades.json")) .name("tradeJsonFileItemWriter") .build(); }
修改后重新运行任务,输出的JSON就会和你期望的带层级缩进、字段换行的格式完全一致。
内容的提问来源于stack exchange,提问作者Nagaraju Chitimilla
相关产品推荐
相关产品推荐

