Ich versuche, ServiceStack.Text zum Deserialisieren einer CSV-Datei mit benutzerdefinierten Headern zu verwenden.CSV mit CustomHeaders mithilfe von ServiceStack.Text deserialisieren
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 funktioniert, wenn SerializeToString verwendet wird. Aber ich kann es nicht funktionieren, wenn DeserializeFromString verwendet.
Das Beispiel einen falschen Separator hatte, soll es jetzt korrekt sein. Wird CustomHeadersMap im Deserializer verwendet? –
@ Kai-Rune der Beispieltext sieht genauso aus? d. h. nichts in der Nähe von CSV, ich habe meine Antwort mit einem Beispiel aktualisiert. Ich habe auch [commited] (https://github.com/ServiceStack/ServiceStack.Text/commit/6085b45e63520f788d1d0b0b748cd2541e37e652), die diese benutzerdefinierten Header auch auf den CSV Deserializer anwendet. Diese Änderung ist jetzt ab v4.0.57 auf MyGet verfügbar, aber Sie müssen [MyGet-Cache löschen] (https://github.com/ServiceStack/ServiceStack/wiki/MyGet#redownloading-myget-packages), um die neueste Version abzurufen Paketversionen. – mythz
Ich bekomme immer noch einen Fehler mit dem aktualisierten nuget-Paket, bitte führen Sie den Code in der Frage. Die CSV-Daten sind im Code enthalten. –