Spring Batch:如何设置 FlatFileItemReader 来读取 json 文件?

yno*_*tu. 3 spring spring-batch spring-boot

到目前为止我的方法:

@Bean
FlatFileItemReader<Blub> flatFileItemReader() {
    FlatFileItemReader<Blub> reader = new FlatFileItemReader<>();

    reader.setResource(new FileSystemResource("test.json"));

    JsonLineMapper lineMapper = new JsonLineMapper();

    reader.setLineMapper(lineMapper);

    return reader;
}
Run Code Online (Sandbox Code Playgroud)

挑战是:reader.setLineMapper()不能使用JsonLineMapper. 如何JsonLineMapper正确使用?

cle*_*ion 6

创建一个类BlubJsonLineMapper

public class BlubJsonLineMapper implements LineMapper<Blub> {

    private ObjectMapper mapper = new ObjectMapper();


    /**
     * Interpret the line as a Json object and create a Blub Entity from it.
     * 
     * @see LineMapper#mapLine(String, int)
     */
    @Override
    public Blub mapLine(String line, int lineNumber) throws Exception {
        return mapper.readValue(line, Blub.class);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后你可以在 FlatFileItemReader 中设置

@Bean
FlatFileItemReader<Blub> flatFileItemReader() {
    FlatFileItemReader<Blub> reader = new FlatFileItemReader<>();

    reader.setResource(new FileSystemResource("test.json"));

    BlubJsonLineMapper lineMapper = new BlubJsonLineMapper();

    reader.setLineMapper(lineMapper);

    return reader;
}
Run Code Online (Sandbox Code Playgroud)