Share via


System.Text.Json exige uma cadeia de caracteres com apenas um caractere para desserializar um char

Para desserializar com êxito um Char usando System.Text.Json, a cadeia de caracteres JSON deve conter apenas um caractere.

Descrição das alterações

Em versões anteriores do .NET, uma cadeia de caracteres com múltiplos char no JSON é desserializada com êxito em um campo ou uma propriedade char. Somente o primeiro char da cadeia de caracteres é usado, como no seguinte exemplo:

// .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\"");

No .NET 5 e versões posteriores, qualquer coisa diferente de uma cadeia de caracteres com apenas um char gera uma JsonException quando o destino de desserialização é um char. A seguinte cadeia de caracteres de exemplo é desserializada com êxito em todas as versões do .NET:

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

Versão introduzida

5,0

Motivo da alteração

A análise da desserialização só deve ter êxito quando o payload fornecido for válido para o tipo de destino. Para um tipo char, o único payload válido é uma cadeia de caracteres com apenas um char.

Ao desserializar o JSON em um char de destino, verifique se a cadeia de caracteres consiste em apenas um char.

APIs afetadas