我正在尝试使用ServiceStack.Text反序列化一些CSV数据。它起作用,除了一些以方括号开头的字符串值。重现该行为的一些简单测试数据如下所示:
Name,Whatever,Id
Bill,[Foo] Bar,1234
假设我们正在反序列化此类:
public class Thing
{
public string Name { get; set; }
public string Whatever { get; set; }
public int Id { get; set; }
}
由于CsvReader中的this code,方括号引起了一些特殊的逻辑,这些逻辑试图将Whatever值变成一个列表。然后将右方括号视为该值的结尾,由于下一个字段是int,因此最终试图将Bar解析为int。
似乎有一种方法可以告诉CsvReader“这里没有JSV”,但是我找不到解决方法。用引号将值引起来是可行的,但我对源数据没有任何控制权。我可以做一些预处理,并引用所有这些值,但是...。
我尝试设置JsConfig.DeSerializeFn,但是很早在我们进行反序列化之前,ParseFields便已对其进行解析。
是否有某种方法可以停止将方括号视为列表的开头?我使用错误的库来解析简单的CSV数据吗?