一尘不染

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

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;
}

挑战是:reader.setLineMapper()无法使用JsonLineMapper。如何JsonLineMapper正确使用?


阅读 715

收藏
2020-05-30

共1个答案

一尘不染

如何设置FlatFileItemReader读取json文件?

这取决于您的json文件的格式:

1.每行都是一个json对象(称为NDJson

例如:

{object1}
{object2}

那么您有两种选择:

  • 1.1使用JsonLineMapper返回的Map<String, Object>。在这种情况下,您的读者也应该返回,Map<String, Object>并且您可以使用项目处理器将项目从转换Map<String, Object>Blub(顺便说一句,将数据从一种类型转换为另一种是项目处理器的典型用例)
  • 1.2使用LineMapper<Blub>基于Jackson或Gson或任何其他库的自定义实现(如@clevertension的答案所示)

2.行包装在json数组中

例如:

[
 {object1},
 {object2}
]

那么您可以使用JsonItemReader我们在4.1.0.M1版本中引入的新功能

2020-05-30