亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

配置 CsvMapper 以檢查每個寫入的值

配置 CsvMapper 以檢查每個寫入的值

倚天杖 2022-06-23 19:35:14
我正在使用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、Sheets 等可能執行的公式或其他內容。例如,如果一個值以@or開頭,=那么我可能會將'字符添加到該值以防止執行。如何配置CsvMapper以便為寫入 CSV 的每個值獲取回調?
查看完整描述

1 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

CsvGenerator和都CsvEncoder執行處理 CSV 輸出值的工作,似乎不包括回調選項。所以我認為杰克遜無法實現這個目標。

但當然,這個任務可以通過其他方法來解決。

在不使用其他庫的情況下,pojoCollection可以進行預處理以清理字符串字段。不知道這些 pojo 的實際結構,選擇可能是:

  • 如果 pojo 是緊湊的并且要處理的字段是眾所周知的,則創建一個方法,該方法期望引用 pojo 的相應 getter 和 setter 作為 args,調用 getter 來檢索值,對其進行清理并設置干凈的值。循環pojoCollection處理它們。

  • 如果字符串字段很多,并且pojo的類型不同并且都需要清理它們,那么使用反射來大量處理所有字符串字段。

但是,如果您不限于使用 jackson,則有一些庫提供了使用回調的可能性。例如,在Univocity 解析器中,ObjectRowWriterProcessor允許結合多種轉換可能性來實現它。


查看完整回答
反對 回復 2022-06-23
  • 1 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號