JSON Serialisierung in Web Api 2 verwendet keine ISO 8601-Daten

8

Ich verwende WebApi 2, um einige Json an den Client zu senden, und verwendet dabei die alte Datumserialisierung und nicht ISO 8601.

Ich sehe:

%Vor%

Mein Global.asax.cs sieht so aus:

%Vor%     
jfar 29.12.2013, 16:41
quelle

2 Antworten

3

Newtonsoft.Json verwendet standardmäßig IsoDateTimeConverter. Auch wenn Sie nichts angeben, sollten Sie das korrekte Iso-Format erhalten (und für mich funktioniert Ihr Code auch gut, übrigens.).

Lesen Sie dies oder Scotts Blog für weitere Informationen zu den Standardeinstellungen

Sie setzen den Konverter höchstwahrscheinlich wieder woanders hin, vielleicht verwenden Sie einen benutzerdefinierten Konverter mit bestimmten Einstellungen? Oder verwenden Sie eine sehr alte Version von Newtonsoft.Json?

    
MichaC 29.12.2013, 17:13
quelle
1

Nur ein kurzer Kommentar zu @ Toolkits Kommentar zur Formatierung.

Der Grund, warum Sie eine Datumszeichenfolge ohne das Z am Ende erhalten, ist, dass die Datetime-Variable, die Sie analysieren, die Art als unspezifiziert haben.

Es ist wahrscheinlich, dass Sie einen Datensatz aus einer Datenbank mit einer DateTime-Eigenschaft analysieren, das Datenbankfeld verliert die Art, die einmal gespeichert wird.

Das ist der Grund, warum json das 'Z' nicht am Ende hinzufügt, es weiß nicht, ob es utc oder lokal ist.

Sie können ein DatetimeOffset anstelle von Datetime verwenden, wenn Sie das Modell ohne zu große Auswirkungen ändern können. Meine Wahl war, einen benutzerdefinierten Parser für Datetime zu schreiben und es zu zwingen, UTC zu sein, wenn nicht spezifiziert wurde.

%Vor%

PD: Ich habe nicht genug Punkte, um einen Kommentar zu schreiben, das ist keine Antwort auf das Hauptproblem.

    
Jesus Mogollon 15.06.2017 14:46
quelle

Tags und Links