我配置了以下读卡器:
@Configuration
public class ReaderConfig {
@Bean
public JsonItemReader<String> jsonItemReader(Resource resource) {
return new JsonItemReaderBuilder<String>()
.jsonObjectReader(new JacksonJsonObjectReader<>(String.class))
.resource(resource)
.name("jsonItemReader")
.build();
}
}
通过这个测试:
@Test
public void jsonItemReaderTest() throws Exception {
ReaderConfig config = new ReaderConfig();
Resource sampleJsonResource = new ClassPathResource("sampleResponse.json");
JsonItemReader<String> reader = config.jsonItemReader(sampleJsonResource);
reader.open(new ExecutionContext());
String item = null;
List<String> results = new ArrayList<>();
do {
item = reader.read();
System.err.println(item);
if (!Objects.isNull(item)) {
results.add(item);
}
} while (item != null);
reader.close();
assertThat(results).hasSize(7);
}
以及以下json:
[
"A",
"B",
"C",
"D",
"E",
"F",
"G"
]
但是,读取器返回空值。尝试使用调试器进行跟踪时,我得到的结果是解析器返回它在数组开头有一个字符串,并且期望应该有一个左大括号。有什么线索吗?这似乎是一个如此明显的用例,以至于我很惊讶它没有被代码覆盖。