首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jackson-dataformat-csv库中转义分隔符字符?

如何在Jackson-dataformat-csv库中转义分隔符字符?
EN

Stack Overflow用户
提问于 2017-01-05 16:56:13
回答 1查看 4.6K关注 0票数 0

我的用例是将Java转换为字符串,以便将其传递给AWS。

我正在编写这个convertToString(),但是我无法找到正确的方法来转义分隔符。

代码语言:javascript
复制
public <T> List<String> convertToString(List<T> objectList, Class<T> tClass) {

        List<String> stringList = new ArrayList<>();
        char delimiter = ',';
        char escape = '\\';

        CsvMapper mapper = new CsvMapper();
        CsvSchema schema = mapper.schemaFor(tClass);

        for (T object : objectList ) {
            try{
                stringList.add(mapper.writer(schema.withColumnSeparator(delimiter).withEscapeChar(escape))
                        .writeValueAsString(object));
            } catch (JsonProcessingException e) {
                System.out.println("Exception : " + e);
            }
        }

        return stringList;
}

输入: SuperHero闪存=新的SuperHero(1," flash ","Barry,Allen","DC"); 预期产出: 1,Flash,"Barry \,Allen",DC 输出: 1,Flash,"Barry,Allen",DC

有人能指出我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-05 17:10:08

您的输出是正确的,在CSV中,当您用双引号环绕一个对象或元素时,它是按原样写的,所以"Flash“是不带引号的,而"Barry,Allen”是用输出中的引号编写的,因此分隔符已经转义了,不需要用反斜杠转义。

编辑/更新

在阅读了github上提供的文档之后,下面的行显示生成器只使用双引号,转义仅用于解析。

escapeChar (int)默认值:-1表示“无”:字符(如果有的话)用于转义值。通常定义为反斜杠('\')。只供解析器使用;生成器只使用引用,包括加倍引号以表示引号本身。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41490518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档