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
.
Ação recomendada
Ao desserializar o JSON em um char
de destino, verifique se a cadeia de caracteres consiste em apenas um char
.
APIs afetadas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de