ServiceStack.Text:包含双引号的 csv 文件有问题

ServiceStack.Text: problems with csv file which contains double quotes

提问人:Andreas Deininger 提问时间:5/28/2020 更新时间:5/28/2020 访问量:151

问:

我正在使用 ServiceStack.Text 库 (V. 5.8.0) 并在使用它时遇到问题:

数据类 (C#):

[DataContract]
public class Item
{
    [DataMember(Name = "id")]
    public String PartID { get; set; }

    [DataMember(Name = "price")]
    public String Price { get; set; }
}

程序类:

class Program
{
    static void Main(string[] args)
    {
        CsvConfig.ItemSeperatorString = ";";
        List<Item> Items = File.ReadAllText("/my/datafile.csv").FromCsv<List<Item>>();
        Debug.Print(Items.Dump());
    }
}

CSV 文件:

id;price;foo
1;2"
1;2"

运行 MWE 时,控制台输出为:

[
    {
        id: 1,
        price: "2""
1"
    }
]

恕我直言,这很奇怪。

我稍微修改了一下csv文件:

id;price
1;2"
1;2"

事情变得更糟了,现在抛出了一个例外。ArgumentOutOfRangeException

这是预期的行为吗?

C# CSV 引用 servicestack-text

评论

0赞 juharr 5/28/2020
问题是数据,你有不平衡的双引号。在这种情况下,我不会期望 CSV 解析器有任何特定行为。
0赞 Andreas Deininger 5/29/2020
你是对的。我刚刚读了 RFC 4180:如果使用双引号将字段括起来,则必须通过在字段前面加上另一个双引号来转义字段内的双引号。如果我坚持这个规范,一切都很好。

答: 暂无答案