繁体   English   中英

读取多个 Json 文件并转换为 POJO Springboot 批处理

[英]Reading Multiple Json Files And Converting To POJO Springboot batch

我有一个文件夹,里面有数千个带有 JSON 内容的文本文件,我需要读取这些文本文件,将其转换为 POJO,然后保存到 MySQL 数据库中。 我打算使用 Spring Batch 应用程序。

这是到目前为止的问题,我所做的研究只显示读取多个 CSV 文件或 XML 文件,没有 JSON 数据。 具体来说,我需要将此用于解析 CSV 文件的方法转换为 JSON 解析器。

@Bean
public FlatFileItemReader<Person> reader() {
    FlatFileItemReader<Person> reader = new FlatFileItemReader<Person>();
    reader.setLineMapper(new DefaultLineMapper<Person>() {{
        setLineTokenizer(new DelimitedLineTokenizer() {{
            setNames(new String[] {"firstname", "lastname", "email", "age"});
        }});
        setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
            setTargetType(Person.class);
        }});
    }});
    return reader;
}

此代码解析 JSON 文件:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\path\\sample.json"));

方法可能是这样的

@Bean
Public FileReader<Person> reader() {
    FileReader<Person> reader = new FileReader<Person>();

    /**** need help on what to do here ****/

    return reader;
}

还看到我正在读取目录中的所有文件,我正在以这种格式传递该目录的值

@Value(value="C:\\path\\*.json")
private Resource[] resources;

所以我需要关于如何使用这个值(所有文件的目录)而不是我之前显示的(单个文件位置)的帮助

Object obj = parser.parse(new FileReader("C:\\path\\sample.json"));

您可以将MultiResourceItemReaderJsonItemReader用作委托。 这是一个快速示例:

@Bean
public JsonItemReader<Person> jsonItemReader(Resources[] resources) {
   JsonItemReader<Person> delegate = new JsonItemReaderBuilder<Person>()
      .jsonObjectReader(new JacksonJsonObjectReader<>(Person.class))
      .name("personItemReader")
      .build();

   MultiResourceItemReader<Person> reader = new MultiResourceItemReader<Person>();
   reader.setDelegate(delegate);
   reader.setResources(resources);
   return reader;
}

您可以在参考文档中找到有关JsonItemReader更多详细信息。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM