我有包含“,”的字符串,需要将其序列化/反序列化为CSV。我已经能够正确地序列化它,但是在反序列化时,它总是错误的。这是我在Java中的代码

List<String> header = ...
test1,
test2, test3  <-- string contains comma ,
test4

List<String> updatedHeaderList = Lists.transform(headerList, new Function<String, String> () {
            public String apply(String input) {
                return  StringEscapeUtils.escapeCsv(input);
            }
        });

Joiner joiner = Joiner.on(separator);
        stringBuilder = joiner.appendTo(stringBuilder, updatedHeaderList);
        stringBuilder.append("\n");
        return stringBuilder.toString();


当我检查序列化的字符串是:
test1,“ test2 \,test3”,test4
在我看来合适

然后我试图反序列化它:

Splitter.on(",").splitToList(resultString)
it returned list as
test1,
test2,
test3,
test4


我如何反序列化它

test1
test2, test3
test4


谢谢

最佳答案

根据RFC 4180


  包含换行符(CRLF),双引号和逗号的字段应
  用双引号引起来。


因此,有效的csv内容必须为:

test1
"test2, test3"
test4

08-25 01:29