Compartir a través de


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.

Al deserializar JSON en un destino char, asegúrese de que la cadena se compone de un solo elemento char.

API afectadas