class JsonJobConfiguration {

	@Bean
	@StepScope
	public JsonItemReader<Trade> itemReader(@Value("#{jobParameters[inputFile]}") Resource resource) {
		return new JsonItemReaderBuilder<Trade>().name("tradesJsonItemReader")
			.resource(resource)
			.jsonObjectReader(new GsonJsonObjectReader<>(Trade.class))
			.build();
	}

	@Bean
	@StepScope
	public JsonFileItemWriter<Trade> itemWriter(@Value("#{jobParameters[outputFile]}") WritableResource resource) {<FILL_FUNCTION_BODY>}

	@Bean
	public Step step(JobRepository jobRepository, JdbcTransactionManager transactionManager,
			JsonItemReader<Trade> itemReader, JsonFileItemWriter<Trade> itemWriter) {
		return new StepBuilder("step", jobRepository).<Trade, Trade>chunk(2, transactionManager)
			.reader(itemReader)
			.writer(itemWriter)
			.build();
	}

	@Bean
	public Job job(JobRepository jobRepository, Step step) {
		return new JobBuilder("job", jobRepository).start(step).build();
	}

}

		return new JsonFileItemWriterBuilder<Trade>().resource(resource)
			.lineSeparator("\n")
			.jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>())
			.name("tradesJsonFileItemWriter")
			.shouldDeleteIfExists(true)
			.build();
	
<no_super_class>