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.

Wenn Sie JSON-Werte in ein char-Ziel deserialisieren, stellen Sie sicher, dass die Zeichenfolge aus einem einzelnen char besteht.

Betroffene APIs