簡體   English   中英

如何用spring批處理解析json文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM