如何用JacksonCsvMapper序列化将要写入CSV文件的Java类?

ldioqlga  于 2023-03-27  发布在  Java
关注(0)|答案(1)|浏览(166)

我有一个写CSV文件的方法:

public static <T> void writeToCsvFileWithHeader(
        List<T> listOfData, Path absolutePathToFile, Class<T> clazz, char columnSeparator)
        throws IOException {

    CsvMapper mapper = new CsvMapper();
    try (SequenceWriter writer = mapper
            .writerWithSchemaFor(clazz)
            .with(mapper
                    .schemaFor(clazz)
                    .withColumnSeparator(columnSeparator)
                    .withoutQuoteChar()
                    .withHeader())
            .writeValues(absolutePathToFile.toFile())) {
        
        writer.writeAll(listOfData);
    }
}

一切正常,但是应用程序应该产生一个SHA-256的数据被写入文件。所以我应该以某种方式从将要写入CSV文件的数据中获取字节,然后从中产生一个SHA-256。
SHA-256函数对于Java来说不是问题。问题是我不知道,如何将我的数据listOfData转换为字节,然后将它们写入文件并使其SHA-256。

qkf9rpyu

qkf9rpyu1#

您已经非常接近解决方案了,考虑到从文档中可以看出CsvMapper是一个专用的ObjectMapper,具有从POJO中生成CsvSchema示例的扩展功能,那么您可以使用ObjectMapper#writeValueAsBytes方法来获得如下结果:

CsvMapper mapper = new CsvMapper();
//method that can be used to serialize any Java value as a byte array.
mapper.writeValueAsBytes(listofData)

相关问题