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.item.json.JsonObjectReader
介面的實作。此介面旨在透過使用串流 API 以區塊方式讀取 JSON 物件來實作。目前提供了兩個實作
為了能夠處理 JSON 記錄,需要以下項目
-
Resource
:代表要讀取的 JSON 檔案的 Spring Resource。 -
JsonObjectReader
:JSON 物件讀取器,用於解析 JSON 物件並將其繫結到項目
以下範例示範如何定義 JsonItemReader
,其適用於先前的 JSON 資源 org/springframework/batch/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.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();
}