[英]How to parse json-file with spring batch?
我有一个以 json 格式写入文件的序列化实体列表。 我需要使用弹簧批处理从文件中读取它们(然后处理它们并写入数据库)。
我发现只有 Spring Batch 提供的平面文件、DB 和 Xml 阅读器。 解析json的正确方法是什么?
我要实施的方法是:
1. read the whole file with FlatFile reader
2. parse it with Jaxson in `read` method
我是春季批次的新手,所以在这里我需要一条建议。 这种方法正确吗? 它不违反任何spring-batch原则吗? 或者我应该使用另一个?
您的方法可行,但我建议您使用Jackson Streaming API直接解析 JSON 文件,而不是有一个额外的步骤来读取整个文件然后处理它。
JsonFactory jsonFactory = new JsonFactory();
JsonParser jp = jsonFactory.createJsonParser(file);
您可以在 Spring Batch 中使用JsonItemReader
。 就我而言,我将 JSON 文件名作为JobParameter
。
我的 JSON 文件中的示例 JSON 内容。
{
"obj1": "abc",
"obj2": "def"
}
MyObj 类:
@Data
@Builder
public class MyObject{
String obj1;
String obj2;
}
这是我的读者。
@Bean
@StepScope
public JsonItemReader<MyObj> myReader() {
LOGGER.info(LOG_TEMPLATE,
getClass().getSimpleName(),
Thread.currentThread().getStackTrace()[1].getMethodName(),
"Inside Reader...");
final ObjectMapper mapper = new ObjectMapper();
final JacksonJsonObjectReader<MyObj> jsonObjectReader = new JacksonJsonObjectReader<>(
MyObj.class);
jsonObjectReader.setMapper(mapper);
final String filePath = config.getRootfolder() + SEPERATOR + inputInfo.getFileName();
return new JsonItemReaderBuilder<MyObj>().jsonObjectReader(jsonObjectReader)
.resource(new FileSystemResource(filePath))
.name("myReader")
.build();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.