Serialisieren und Deserialisieren von TimeSpan-Werten für eine property vom Typ Object

Habe ich eine Klasse, die ein Feld vom Typ Object enthalten können, ein TimeSpan-Objekt.

Ich bin serialisieren dies und das Deserialisieren:

public class MyObject
{
    public object myTimeSpan { get; set; }
}

...

var myObject = new MyObject { myTimeSpan = TimeSpan.FromDays(2) };
var json = JsonConvert.SerializeObject(myObject);

...

var duplicateObject = JsonConvert.DeserializeObject<MyObject>(json);

Und wenn ich es Tue, duplicateObject.myTimeSpan enthält den string "2:00:00".

Wie kann ich diese zu Deserialisieren in eine TimeSpan-Objekt?

Zwei Punkte:

  1. Ich bin nicht der Umgang mit strings serialisiert wurden irgendwo sonst. Die Streicher nur ich werde Deserialisieren von strings, die ich serialisiert.
  2. Das Feld hat den Typ " Objekt - es kann eine Zeichenfolge enthalten, oder ein DateTime-Wert, oder es kann enthalten, eine Zeitspanne. Derzeit, es ist nur die Zeitspanne an, ich habe Probleme mit.
Dein code scheint unvollständig. Was ist 'selectionCriteria' Sie sind eigentlich serialisieren?
Ich nehme an, du meintest var json = JsonConvert.SerializeObject(myObject);. Wenn ich das mache, bekomme ich die JSON -{"myTimeSpan":"2.00:00:00"}, und das duplizierte Objekt hat einen 2-Tage-Zeitspanne.
Sorry. Cut-and-paste-Fehler behoben.
Ich bekomme nicht ein TimeSpan-Objekt, wenn das zugrunde liegende Feld ist vom Typ object.
Möglicherweise müssen Sie implementieren eine benutzerdefinierte JsonConverter können versuchen, analysieren die string-Darstellung des TimeSpan wieder in eine tatsächliche TimeSpan Objekt.

InformationsquelleAutor Jeff Dege | 2014-12-10

Schreibe einen Kommentar