2016-06-16 15 views
2

Ich habe diese Json von einem Web-api:Wie deserialisieren Objekt mit Datum in C#

jsonstring ={"users":[{"id":1123,"last_update":"2016-02-28 14:53:04"}],"page":1,"pages":1} 

, die ich wie in einem Objekt deserialisieren möchten:

public class Rootobject 
{ 
    public User[] users { get; set; } 
    public int page { get; set; } 
    public int pages { get; set; } 
} 

public class User 
{ 
    public int id { get; set; } 
    public DateTime last_update { get; set; } 
} 

für das ich benutze:

var obj= JsonConvert.DeserializeObject<Rootobject>(jsonString); 

Das Ergebnis hat null für last_update.

jsonstring ist ein String-Ergebnis von WebClient.DownloadString(url); die aussehen wie oben im Beispiel.

Wie kann ich das Datum bei der Deserialisierung erhalten?

Edit:

Keine der Lösungen von diesem Posten Deserializing dates with dd/mm/yyyy format using Json.Net mir helfen, mein Problem zu beheben.

Antwort

2
var obj = JsonConvert.DeserializeObject<Rootobject>(jsonString, 
      new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }); 

Fiddle

+2

http://stackoverflow.com/questions/21256132/deserializing-dates-with-dd-mm-yyyy-format-using- json-net –

+0

funktioniert nicht, mit nullable datetime, ich bekomme null, und nicht nullable datetime ich bekomme min datetime. –

+0

Sehen Sie eine funktionierende Demo –

0

Ändern Sie die Eigenschaft last_update als Nullable, Dann können Sie das Nullliteral dem DateTime-Typ zuweisen. Es bietet eine andere Ebene der Indirektion. So verwenden wie folgt aus:

public DateTime? last_update { get; set; } 

Dies ist für die Annahme Das Datum selbst wenn es null ist, können Sie das Datumsformat angeben Während die JSON Deserialisieren. Verwenden Sie diese Thread für diese

+0

Ich habe versucht, dass die Ergebnisse immer noch null für Datum –

-1

"2016-02-28 14:53:04" ist keine gültige RFC3339 Datum Zeit, und ich denke, es kann es deshalb nicht analysieren.

Es muss sein:

2016-02-28T14:53:04 

Beachten Sie auch, dass das nicht null sein kann, da DateTime eine Struktur ist. Erstellen Sie den Datentyp DateTime?, der NULL-Werte zulässt, um es nullfähig zu machen.

Verwandte Themen