JSON Item Readers 和 Writers
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 記錄,需要以下內容:
-
Resource:表示要讀取的 JSON 檔案的 Spring 資源。 -
JsonObjectReader:一個 JSON 物件讀取器,用於解析 JSON 物件並將其繫結到專案中
以下示例展示瞭如何定義一個 JsonItemReader,它與之前的 JSON 資源 org/springframework/batch/infrastructure/item/json/trades.json 和基於 Jackson 的 JsonObjectReader 配合使用
@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 String。目前提供了兩個實現:
要能夠寫入 JSON 記錄,需要以下內容:
-
Resource:表示要寫入的 JSON 檔案的 SpringResource -
JsonObjectMarshaller:一個 JSON 物件編組器,用於將物件編組為 JSON 格式
以下示例展示瞭如何定義 JsonFileItemWriter
@Bean
public JsonFileItemWriter<Trade> jsonFileItemWriter() {
return new JsonFileItemWriterBuilder<Trade>()
.jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>())
.resource(new ClassPathResource("trades.json"))
.name("tradeJsonFileItemWriter")
.build();
}