Die Umwandlung in DateTime in json.net
Ich versuche zu Deserialisieren die folgenden:
{"ts":"2012-04-22 04:14:50,669", "msg":"Hello"}
in
public class LogEntry
{
public DateTime Ts { get; set; }
public string Msg { get; set; }
}
mit
var logEntry = JsonConvert.DeserializeObject<LogEntry>(line);
Aber eine JsonSerializationException sagen, "{"Error converting-Wert \"2012-04-22 04:14:28,478\" Typ 'System.DateTime'. Zeile 1, position 31."}. Ich kann nicht ändern das log-format.
Ich glaube, ich könnte brauchen, um eine Analyse der Zeichenkette für das Datum selbst mit einem Konverter. Aber ich finde keine Beispiele von JsonConverter
, die relevant erscheinen. Wie genau Lesen Sie den Wert aus der reader
im ReadJson
Methode.
Gibt es einfache Beispiele, die ich anschauen sollte? Oder bin ich da etwa falsch?
- Diese Frage bei stack-apps aussieht, wie Sie aussieht, was Sie brauchen: stackapps.com/questions/1175/...
- Danke. Ja, ich sah es vor, aber da der code in der ReadJson-Methode auskommentiert, habe ich nicht sehen es als ein sehr gutes Beispiel.
- Blättern Sie nach unten durch das Beispiel, es ist eine unkommentierte version der ReadJson Methode. Entweder Weg, das Grundprinzip der Beispiel-sound.
- Was ist mit dem Komma?
- Das Komma, weil es das dezimal-Trennzeichen. Ich bin mehr daran interessiert, in der Allgemeinen Weise zu helfen Json.net analysieren etwas.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Format auf Ihrem DateTime-Zeichenfolge verwendet ein Komma als Dezimaltrennzeichen (
,478
). Sie können in der Lage sein, zu initialisieren, eineJsonSerializerSettings
Objekt (hier dokumentiert) mit einer entsprechendenCulture
, und dann deserialise mitDeserializeObject<T>(value, settings)
(hier dokumentiert). Dies würde deserialise mit der Kultur, die Sie angeben, anstatt die Standard -InvariantCulture
.Ich vermute, das Problem ist, weil der Wert, den Sie bekommen ist mit einem Komma als Dezimaltrennzeichen, die nahelegt, es wurde in ein Gebietsschema, das verwendet Kommas (z.B. viele Europäische Sprachen andere als Englisch). Sie könnten versuchen Sie Ihr Gebietsschema zu entsprechen, so dass die Analyse funktionieren würde?