I am creating a spring batch app which accepts a filename from JobParameters and use it to read a json file in a certain path.
I tried creating a JsonItemReader, here is the below code...
@Bean
@StepScope
public JsonItemReader<MyObject> myJsonItemReader() {
final ObjectMapper mapper = new ObjectMapper();
final JacksonJsonObjectReader<MyObject> jsonObjectReader = new JacksonJsonObjectReader<>(
MyObject.class);
jsonObjectReader.setMapper(mapper);
final String filePath = config.getRootfolder() + "/" + inputInfo.getFileName();
return new JsonItemReaderBuilder<MyObject>().jsonObjectReader(jsonObjectReader)
.resource(new FileSystemResource(filePath))
.name("myJsonItemReader")
.build();
}
And here is the sample json i am going to read.
{
"attr1":"abc",
"list":[
{
"attr_list1": "abc",
"attr_list2":"abc"
},
{
"attr_list1": "abc",
"attr_list2":"abc",
}
]
}
But upon running and debugging my reader, i got an error "The Json input stream must start with an array of objects"