当前位置: 首页 > 知识库问答 >
问题:

Spring Batch FlatFileItemWriter-输出自定义

姬安志
2023-03-14

我需要生成具有以下要求的CSV文件:

  • 每个字段都被引号包围
  • 分隔符(管道字符)用反斜杠转义
  • 反斜杠用反斜杠转义

输入:

  • 字段1
  • Field2 with\反斜杠"DoubleQuotes"And|管道
  • 字段3

预期产出:

"Field1"|"Field2With\\Backslash\"DoubleQuotes\"And|Pipe"|"Field3"

有可能获得这样的输出吗?

共有1个答案

方楷
2023-03-14

基本上,您只需要在编写字段之前处理字段。你可以用这两种方法

假设这个方法处理你的场

public String escape(String str) {
    str = "\"" + str + "\"";
    str = str.replace("|", "\\|");
    str = str.replace("\\", "\\\\");
    return str;
}

1-在处理器期间处理它-首选

@Override
public A process(B b) throws Exception {
    A a = new A();
    //Process b to a...    

    a.setField1(escape(a.getField1)); //For each fields
    return a;
}

2-在自定义编写器中编写之前对其进行处理

public class EscapeFlatFileItemWriter<A> extends FlatFileItemWriter<A> {

    @Override
    public void write(List<? extends A> items) throws Exception {
        for (A a : items) {
            a.setField1(escape(a.getField1)); //For each fields
        }
        super.write(items);
    }
}
 类似资料:
  • 我正在构建基于spring(spring-boot)的api。是否可以从hateoas库json输出中删除_embedded关键字?我希望我的项目集合不显示在_embedded下。我知道它违反了规范,但我想知道是否有简单的方法来定制输出,但仍然使用spring hateoas?如果不可能,我应该使用不同的api构建库,以便在生成的输出方面具有更大的灵活性,在这种情况下,您有什么建议吗? 我的控制器

  • 我使用的是jboss KeyCloak1.5最终版本。我开发了与keycloak属性和我的用户企业数据库接口的自定义用户联邦提供程序。 我的需要是发送到用户登录界面自定义的错误消息,基于特定的特定错误与我的遗留用户数据库。

  • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

  • 因此,基本上,当为时,即第一次,应在20秒内触发,并将设置为。从下一次开始,它应该每隔5秒就会被发射一次。 我面临的问题是,每次被激发时,输出中只有一条消息。也就是说,我在20秒后收到一条消息,每5秒收到一条消息。我希望在每次触发的输出中有20条消息。 如果我使用并创建一个五秒的时间窗口,则每5秒输出20条消息。请帮我把这个代码弄对。我是不是缺了什么?

  • 本文向大家介绍Python日志:自定义输出字段 json格式输出方式,包括了Python日志:自定义输出字段 json格式输出方式的使用技巧和注意事项,需要的朋友参考一下 最近有一个需求:将日志以json格式输出, 并且有些字段是logging模块没有的.看了很多源码和资料, 终于搞定, 抽取精华分享出来, 一起成长. 运行结果: 其实就是重写了logging.Filter的filter方法,自定

  • 自定义传输 Nest provides TCP and Redis as a built-in transport methods. It makes prototyping incredibly fast & easy, but sometimes you might want to use another type of transport, e.g. RabbitMQ messaging.