我使用jackson-dataformat-csv将POJO集合导出到CSV,如下所示:
CsvSchema.Builder schemaBuilder = CsvSchema.builder()
.addColumn("id")
.addColumn("name")
etc...
CsvSchema schema = schemaBuilder.build().withHeader();
CsvMapper mapper = new CsvMapper();
mapper.enable(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS);
String csv = mapper.writer(schema).writeValueAsString(pojoCollection);我希望在将每个字段值写入CSV之前检查它,并可选择地修改该值,以防止Excel、Sheet等可能执行的公式或其他内容。例如,如果一个值以@或=开头,那么我可能会将'字符放在该值的前面,以防止执行。
如何配置CsvMapper,以便为写入CSV的每个值获得回调?
发布于 2019-02-20 10:24:34
执行CSV输出值处理任务的CsvGenerator和CsvEncoder似乎都不包含回调选项。所以我认为杰克逊的目标是无法实现的。
但当然,这一任务可以通过其他途径解决。
在不使用其他库的情况下,可以对pojoCollection进行预处理,目的是清除字符串字段。由于不知道这些职位的实际结构,这些选择可能是:
pojoCollection来处理它们。但是,如果不受限制使用jackson,则有一些库提供了使用回调的可能性。例如,在统一解析器中,ObjectRowWriterProcessor允许结合多种转换可能性来实现它。
https://stackoverflow.com/questions/54754919
复制相似问题