System.Text.Json richiede una stringa a singolo carattere per la deserializzazione di un char

Per deserializzare correttamente un Char usando System.Text.Json, la stringa JSON deve contenere un singolo carattere.

Descrizione delle modifiche

Nelle versioni precedenti di .NET, una stringa multi-char nel codice JSON viene deserializzata correttamente in una proprietà o campo char. Viene usato solo il primo char della stringa, come indicato nell'esempio seguente:

// .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 e versioni successive, qualsiasi elemento diverso da una stringa a singolo char genera un'eccezione JsonException quando la destinazione della deserializzazione è un char. La stringa dell'esempio seguente viene deserializzata correttamente in tutte le versioni di .NET:

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

Versione introdotta

5.0

Motivo della modifica

L'analisi per la deserializzazione dovrebbe avere esito positivo solo quando il payload specificato è valido per il tipo di destinazione. Per un tipo char, l'unico payload valido è una stringa a singolo char.

Quando si deserializza il codice JSON in una destinazione di tipo char, assicurarsi che la stringa sia costituita da un singolo char.

API interessate