0
カスタムヘッダーを含むcsvファイルをデシリアライズするためにServiceStack.Textを使用しようとしています。ServiceStack.Textを使用してCustomHeadersでCSVを非直列化する
var csv = "Col-1,Col-2" + Environment.NewLine +
"Val1,Val2" + Environment.NewLine +
"Val3,Val3" + Environment.NewLine;
public class Line
{
public string Col1 { get; set; }
public string Col2 { get; set; }
}
ServiceStack.Text.CsvConfig<Line>.CustomHeadersMap = new Dictionary<string, string> {
{"Col1", "Col-1"},
{"Col2", "Col-2"}
};
var r2 = ServiceStack.Text.CsvSerializer.DeserializeFromString<List<Line>>(csv);
Assert.That(r2.Count() == 2, "It should be 2 rows");
Assert.That(r2[0].Col1 == "Val1", "Expected Val1");
Assert.That(r2[0].Col2 == "Val2", "Expected Val2");
CustomHeadersMapは、SerializeToStringが使用されている場合に機能します。しかし、私はDeserializeFromStringを使用しているときに動作させることはできません。
例が間違ったセパレータを持っていた、それは今正しいはずここでは、JavaScriptでの例です。デシリアライザでCustomHeadersMapが使用されていますか? –
@ Kai-Runeサンプルテキストはまったく同じように見えますか?つまり、CSVに近いものはありません。私は答えを例で更新しました。これらのカスタムヘッダーをCSVデシリアライザにも適用するだけです(https://github.com/ServiceStack/ServiceStack.Text/commit/6085b45e63520f788d1d0b0b748cd2541e37e652)。この変更はMyGetのv4.0.57から利用できますが、最新のものを取得するには[MyGetキャッシュをクリアする](https://github.com/ServiceStack/ServiceStack/wiki/MyGet#redownloading-myget-packages)が必要ですパッケージのバージョン。 – mythz
更新されたnugetパッケージでエラーが発生する場合は、質問のコードを実行してください。 csvデータはコードに含まれています。 –