System.Text.Json erfordert zum Deserialisieren eines Chars eine Zeichenfolge mit einem einzelnen Zeichen.
Um ein Char mit System.Text.Json erfolgreich zu deserialisieren, muss die JSON-Zeichenfolge ein einzelnes Zeichen enthalten.
Änderungsbeschreibung
In bisherigen .NET-Versionen wurde eine Zeichenfolge mit mehreren char
-Variablen in der JSON-Datei erfolgreich in eine char
-Eigenschaft oder ein CHAR-Feld deserialisiert. Es wird nur der erste char
der Zeichenfolge verwendet, wie im folgenden Beispiel gezeigt:
// .NET Core 3.0 and 3.1: Returns the first char 'a'.
// .NET 5 and later: Throws JsonException because payload has more than one char.
char deserializedChar = JsonSerializer.Deserialize<char>("\"abc\"");
In .NET 5 und höher bewirkt etwas anderes wie eine Zeichenfolge mit einem einzelnen char
, dass eine JsonException-Ausnahme ausgelöst wird, wenn es sich bei dem Deserialisierungsziel um ein char
handelt. Die folgende Beispielzeichenfolge wird in allen .NET-Versionen erfolgreich deserialisiert:
// Correct usage.
char deserializedChar = JsonSerializer.Deserialize<char>("\"a\"");
Eingeführt in Version
5.0
Grund für die Änderung
Das Parsen für die Deserialisierung sollte nur erfolgreich sein, wenn die bereitgestellten Nutzdaten für den Zieltyp gültig sind. Bei einem char
-Typ bestehen gültige Nutzdaten aus einer Zeichenfolge mit einem einzelnen char
-Zeichen.
Empfohlene Maßnahme
Wenn Sie JSON-Werte in ein char
-Ziel deserialisieren, stellen Sie sicher, dass die Zeichenfolge aus einem einzelnen char
besteht.