Ich verschiebe meinen Code von .NET Core 2.x auf .NET Core 3.x (dh verwende die native Bibliothek System.Text.Json
). Dabei bin ich auf einige Probleme Newtonsoft.Json
gestoßen, bei denen die frühere Unterstützung für nullfähige Aufzählungen derzeit keinen eindeutigen Migrationspfad hat - es sieht so aus, als würde sie in .NET Core 3.x nicht unterstützt.
Bei Verwendung Newtonsoft.Json
des JSON-Konverters wurden beispielsweise nullfähige Aufzählungen unterstützt, z.
public enum UserStatus
{
NotConfirmed,
Active,
Deleted
}
public class User
{
public string UserName { get; set; }
[JsonConverter(typeof(StringEnumConverter))] // using Newtonsoft.Json
public UserStatus? Status { get; set; } // Nullable Enum
}
Die aktuelle Version der nativen Bibliothek
System.Text.Json
scheint dies nicht zu unterstützen.
Wie löse ich dieses Problem? Ich kann meinen Code nicht migrieren!
Antworten:
Leider gibt es derzeit keine "out-of-the-box"
System.Text.Json
-Unterstützung für die Konvertierung von nullbaren Aufzählungen.Die Lösung. Verwenden Sie einen benutzerdefinierten Konverter.
Sie können es an Ihrem Grundstück anbringen, indem Sie es mit dem benutzerdefinierten Konverter dekorieren:
Hier ist der Konverter:
Hoffe, das hilft, bis es native Unterstützung gibt, ohne dass ein benutzerdefinierter Konverter erforderlich ist!
quelle
Sie sollten in der Lage sein, Ihr ursprüngliches Verhalten wiederherzustellen, indem Sie das Newtonsoft JSON-Nuget installieren und dieses in Ihren Code einfügen. Ich nehme an, Sie migrieren eine ASP-App:
quelle
System.Text.Json
, das mit ASP.NET Core 3.x geliefert wurde. --- Die erwähnte "Migration" war von 2.x bis 3.x