简体   繁体   English

使用ServiceStack.Text使用CustomHeaders反序列化CSV:不起作用吗?

[英]Deserialize CSV with CustomHeaders using ServiceStack.Text: not working?

consider following class: 考虑以下课程:

class Foo {
    public string bar { get; set; }
    public string rab { get; set; }

    public override string ToString()
    {
        return string.Format("[Foo bar={0}, rab={1}]", bar, rab);
    }
}

And following code: 和以下代码:

var csv1 =
    "bar,rab" + Environment.NewLine +
    "a,b" + Environment.NewLine +
    "c,d" + Environment.NewLine +
    "e,f" + Environment.NewLine;

var csv2 =
    "xbar,xrab" + Environment.NewLine +
    "a,b" + Environment.NewLine +
    "c,d" + Environment.NewLine +
    "e,f" + Environment.NewLine;

Console.WriteLine(CsvSerializer.DeserializeFromString<List<Foo>>(csv1).First());

CsvConfig<TMDBEntity>.CustomHeadersMap = new Dictionary<string, string> {
    {"bar", "xbar"},
    {"rab", "xrab"}
};

Console.WriteLine(CsvSerializer.DeserializeFromString<List<Foo>>(csv2).First());

It is printing: 正在打印:

[Foo bar=a, rab=b]
[Foo bar=, rab=]

while I would expect it to print 虽然我希望它能打印

[Foo bar=a, rab=b]
[Foo bar=a, rab=b]

Why is it not picking up the custom headers using xbar and xrab? 为什么不使用xbar和xrab获取自定义标头?

ServiceStack.Text version is 4.5.14.0 ServiceStack.Text版本为4.5.14.0

This issue should be resolved from this commit which is available from ServiceStack v5.0.0 that's now available on MyGet . 此问题应通过此提交解决, 该提交可从MyStack上提供的ServiceStack v5.0.0中获得

Note you need to configure CsvConfig<Foo> in order to change how Foo is deserialized, eg: 注意,您需要配置CsvConfig<Foo>才能更改Foo的反序列化方式,例如:

CsvConfig<Foo>.CustomHeadersMap = new Dictionary<string, string> {
    {"bar", "xbar"},
    {"rab", "xrab"}
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM