Wenn Sie System.Text.Json verwenden, um JSON zu deserialisieren, das die Zeichenfolgendarstellung einer Aufzählung enthält, erhalten Sie die folgende Ausnahme:
Das folgende JSON würde diese Ausnahme verursachen. Konferenz ist eine Aufzählung, und diese verwendet die Zeichenfolgendarstellung „NFC“ anstelle des numerischen Werts der Aufzählung.
{
"TeamName": "Detroit Lions",
"Conference": "NFC"
}
Code language: JSON / JSON with Comments (json)
Lösung
Standardmäßig verarbeitet System.Text.Json keine Enum-Strings.
Sie müssen einen JsonStringEnumConverter über JsonSerializerOptions übergeben und die Optionen beim Deserialisieren übergeben:
var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringEnumConverter());
var team = JsonSerializer.Deserialize<NFLTeam>(json, options);
Code language: C# (cs)
Das gleiche Problem tritt bei der Serialisierung auf. Wenn Sie JsonStringEnumConverter nicht übergeben, werden Objekte mit dem numerischen Enum-Wert anstelle ihrer Zeichenfolgendarstellung serialisiert.