JSON 项阅读器与写入器
Spring Batch 支持以下格式的 JSON 资源读写:
[
{
"isin": "123",
"quantity": 1,
"price": 1.2,
"customer": "foo"
},
{
"isin": "456",
"quantity": 2,
"price": 1.4,
"customer": "bar"
}
]
假设JSON资源是一个对应的JSON对象数组 单个物品。Spring Batch 并不绑定任何特定的 JSON 库。
JsonItemReader
这JsonItemReader将 JSON 解析和绑定委托给org.springframework.batch.infrastructure.item.json.JsonObjectReader接口。该接口
旨在通过使用流式API读取JSON对象来实现
分段。目前提供两种实现:
要能够处理JSON记录,需要以下条件:
-
资源: 一个表示要读取的 JSON 文件的 Spring 资源。 -
JsonObjectReader: 一个用于解析和绑定 JSON 对象到项目的 JSON 对象阅读器
以下示例展示了如何定义JsonItemReader该方法适用于
前述 JSON 资源org/springframework/batch/infrastructure/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.infrastructure.item.json.JsonObjectMarshaller接口。合同
该接口的目的是将一个对象汇入 JSON 格式字符串.
目前提供两种实现:
要能够编写JSON记录,需要以下条件:
-
资源:一个Spring资源代表要写入的JSON文件 -
JsonObjectMarshaller: A JSON object marshaller to marshall objects to JSON 格式
以下示例展示了如何定义JsonFileItemWriter:
@Bean
public JsonFileItemWriter<Trade> jsonFileItemWriter() {
return new JsonFileItemWriterBuilder<Trade>()
.jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>())
.resource(new ClassPathResource("trades.json"))
.name("tradeJsonFileItemWriter")
.build();
}