Как получить данные JSON из внешнего API с помощью Spring-Batch и JsonItemReaderBuilder - PullRequest
1 голос
/ 01 июля 2019

Я следовал Spring Batch docs , который работает и достаточно прост и банален, но все еще не может понять, как применить ту же технику для извлечения данных JSON из внешнего API. Насколько я понимаю, я должен использовать JsonItemReaderBuilder и определить метод reader для возврата экземпляра JsonItemReader следующим образом:

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public JsonItemReader<Person> reader() {
        return new JsonItemReaderBuilder<Person>()
                .name("personItemReader")
                .build();
    }

Проблема, с которой я застрял, состоит в том, как заменить строку .resource(new ClassPathResource("sample-data.csv")) в приведенном выше примере, которая просто читает файл CSV? Я думаю, что я должен передать данные JSON как InputStream экземпляр или что-то в этом роде? В какой ресурс я должен перейти? Спасибо.

1 Ответ

2 голосов
/ 02 июля 2019

JsonItemReader работает с любой реализацией org.springframework.core.io.Resource.Так что в вашем случае вы можете использовать org.springframework.core.io.UrlResource.Вот быстрый пример:

@Bean
public JsonItemReader<Person> reader() throws Exception {
    URL resource = new URL("http/url/to/file/persons.json");
    return new JsonItemReaderBuilder<Person>()
            .name("personItemReader")
            .resource(new UrlResource(resource))
            .jsonObjectReader(new JacksonJsonObjectReader<>(Person.class))
            .build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...