JSON 项读取器和写入器
Spring Batch 支持读取和写入以下格式的 JSON 资源:
[
{
"isin": "123",
"quantity": 1,
"price": 1.2,
"customer": "foo"
},
{
"isin": "456",
"quantity": 2,
"price": 1.4,
"customer": "bar"
}
]
假设 JSON 资源是对应于 单个项目。Spring Batch 不绑定到任何特定的 JSON 库。
JsonItemReader
这JsonItemReader
将 JSON 解析和绑定委托给org.springframework.batch.item.json.JsonObjectReader
接口。此接口
旨在通过使用流式处理 API 读取 JSON 对象来实现
成块。目前提供了两种实现:
为了能够处理 JSON 记录,需要满足以下条件:
-
Resource
:一个 Spring Resource,表示要读取的 JSON 文件。 -
JsonObjectReader
:一个 JSON 对象读取器,用于解析 JSON 对象并将其绑定到项目
以下示例演示如何定义JsonItemReader
它与
previous JSON 资源org/springframework/batch/item/json/trades.json
以及JsonObjectReader
基于 Jackson:
@Bean
public JsonItemReader<Trade> jsonItemReader() {
return new JsonItemReaderBuilder<Trade>()
.jsonObjectReader(new JacksonJsonObjectReader<>(Trade.class))
.resource(new ClassPathResource("trades.json"))
.name("tradeJsonItemReader")
.build();
}
JsonFileItemWriter
这JsonFileItemWriter
将项的封送委托给org.springframework.batch.item.json.JsonObjectMarshaller
接口。合同
的 JSON 是获取一个对象并将其编组为 JSONString
.
目前提供了两种实现:
为了能够写入 JSON 记录,需要满足以下条件:
-
Resource
: 弹簧Resource
,表示要写入的 JSON 文件 -
JsonObjectMarshaller
:将对象编组器编组为 JSON 格式
以下示例演示如何定义JsonFileItemWriter
:
@Bean
public JsonFileItemWriter<Trade> jsonFileItemWriter() {
return new JsonFileItemWriterBuilder<Trade>()
.jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>())
.resource(new ClassPathResource("trades.json"))
.name("tradeJsonFileItemWriter")
.build();
}