Freigeben über


System.Text.Json erfordert eine single-char-Zeichenfolge zum Deserialisieren eines Zeichens

Um eine Char mit System.Text.Json erfolgreich zu deserialisieren, muss die JSON-Zeichenfolge ein einzelnes Zeichen enthalten.

Änderungsbeschreibung

In früheren .NET-Versionen wird die mehrteiligechar Zeichenfolge im JSON erfolgreich in eine Eigenschaft oder einchar Feld deserialisiert. Wie im folgenden Beispiel wird nur der erste char der Zeichenfolge verwendet:

// .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 führt alles andere als eine einzelne char Zeichenfolge dazu, dass JsonException ausgelöst wird, wenn das Deserialisierungsziel ein char ist. Die folgende Beispielzeichenfolge wird in allen .NET-Versionen erfolgreich deserialisiert:

// Correct usage.
char deserializedChar = JsonSerializer.Deserialize<char>("\"a\"");

Eingeführte Version

5.0

Grund für Änderung

Die Analyse für die Deserialisierung sollte nur erfolgreich sein, wenn die angegebene Nutzlast für den Zieltyp gültig ist. Bei einem char Typ ist die einzige gültige Nutzlast eine einzelnechar Zeichenfolge.

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

Betroffene APIs