JSON 项读取器和写入器

Spring Batch 支持读取和写入以下格式的 JSON 资源:spring-doc.cn

[
  {
    "isin": "123",
    "quantity": 1,
    "price": 1.2,
    "customer": "foo"
  },
  {
    "isin": "456",
    "quantity": 2,
    "price": 1.4,
    "customer": "bar"
  }
]

假设 JSON 资源是对应于 单个项目。Spring Batch 不绑定到任何特定的 JSON 库。spring-doc.cn

JsonItemReader

将 JSON 解析和绑定委托给接口的实现。此接口 旨在通过使用流式处理 API 读取 JSON 对象来实现 成块。目前提供了两种实现:JsonItemReaderorg.springframework.batch.item.json.JsonObjectReaderspring-doc.cn

为了能够处理 JSON 记录,需要满足以下条件:spring-doc.cn

  • Resource:一个 Spring Resource,表示要读取的 JSON 文件。spring-doc.cn

  • JsonObjectReader:一个 JSON 对象读取器,用于解析 JSON 对象并将其绑定到项目spring-doc.cn

以下示例显示了如何定义与 以前的 JSON 资源和基于 Jackson 的 JSON 资源:JsonItemReaderorg/springframework/batch/item/json/trades.jsonJsonObjectReaderspring-doc.cn

@Bean
public JsonItemReader<Trade> jsonItemReader() {
   return new JsonItemReaderBuilder<Trade>()
                 .jsonObjectReader(new JacksonJsonObjectReader<>(Trade.class))
                 .resource(new ClassPathResource("trades.json"))
                 .name("tradeJsonItemReader")
                 .build();
}

JsonFileItemWriter

将项的封送委托给接口。合同 的接口是获取一个对象并将其封送到 JSON 。 目前提供了两种实现:JsonFileItemWriterorg.springframework.batch.item.json.JsonObjectMarshallerStringspring-doc.cn

为了能够写入 JSON 记录,需要满足以下条件:spring-doc.cn

  • Resource:一个 Spring,表示要写入的 JSON 文件Resourcespring-doc.cn

  • JsonObjectMarshaller:将对象编组器编组为 JSON 格式spring-doc.cn

以下示例演示如何定义 :JsonFileItemWriterspring-doc.cn

@Bean
public JsonFileItemWriter<Trade> jsonFileItemWriter() {
   return new JsonFileItemWriterBuilder<Trade>()
                 .jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>())
                 .resource(new ClassPathResource("trades.json"))
                 .name("tradeJsonFileItemWriter")
                 .build();
}