Чтение нескольких файлов Json и преобразование в пакет POJO Springboot - PullRequest
0 голосов
/ 09 января 2019

У меня есть папка с тысячами текстовых файлов с содержимым JSON, которые мне нужно прочитать, преобразовать в POJO и затем сохранить в базе данных MySQL.

Я намерен использовать пакетное приложение Springboot. Вот проблема, которую я до сих пор проводил, исследование показало только чтение нескольких CSV-файлов или XML-файлов и отсутствие данных JSON. В частности, мне нужно преобразовать этот метод для синтаксического анализа файла CSV в анализатор JSON

@Bean
Public FlatFileItemReader<Person> reader(){
FlatFileItemReader<Person> reader=new  FlatFileItemReader<Person> reader();
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 object = parser.parse(new FileReader("c:\\directory path\\sample.txt"));
Person person=(Person)object;

Метод может быть что-то вроде этого

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

/****need help on what to do here**/
 return reader;
  }

Также, видя, что я читаю все файлы в каталоге, я передаю значение этого каталога в этом формате

@Value(value="C:\\Users\\user\\Documents\\json_dump\NW_*.txt")
private Resource[] resources;

Так что мне нужна помощь о том, как использовать это значение (каталог для всех файлов) вместо того, что я показывал ранее (расположение одного файла)

Object object = parser.parse(new FileReader("c:\\directory path\\sample.txt"));

1 Ответ

0 голосов
/ 10 января 2019

Вы можете использовать MultiResourceItemReader с JsonItemReader в качестве делегата. Вот быстрый пример:

@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 можно найти в справочной документации .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...