System.Text.Json requiere una cadena de un solo elemento char para deserializar a un elemento char
Para deserializar correctamente un elemento Char mediante System.Text.Json, la cadena JSON debe contener un solo carácter.
Descripción del cambio
En versiones anteriores de .NET, una cadena de varios elementos char
en JSON se deserializaba correctamente en una propiedad o campo char
. Solo se usa el primer elemento char
de la cadena, como en el ejemplo siguiente:
// .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\"");
En .NET 5 y versiones posteriores, si se pasa algo distinto a una cadena de un solo elemento char
, se inicia una excepción JsonException cuando el parámetro de tipo es un elemento char
. La siguiente cadena de ejemplo se deserializa correctamente en todas las versiones de .NET:
// Correct usage.
char deserializedChar = JsonSerializer.Deserialize<char>("\"a\"");
Versión introducida
5.0
Motivo del cambio
El análisis para la deserialización solo se realiza correctamente si la carga proporcionada es válida para el tipo de destino. Para un tipo char
, la única carga válida es una cadena de un solo elemento char
.
Acción recomendada
Al deserializar JSON en un destino char
, asegúrese de que la cadena se compone de un solo elemento char
.