[英]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.