Partager via


System.Text.Json nécessite une chaîne mono-char pour désérialiser un char

Pour bien désérialiser un Char à l’aide de System.Text.Json, la chaîne JSON doit contenir un caractère unique.

Description de la modification

Dans les versions .NET précédentes, une chaîne multi-char du fichier JSON est désérialisée dans une propriété ou un champ char. Seul le premier char de la chaîne est utilisé, comme dans l’exemple suivant :

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

Dans .NET 5 et versions ultérieures, tout ce qui est différent d’une chaîne à char unique entraîne la levée d’une JsonException lorsque la cible de désérialisation est un char. L’exemple de chaîne suivant est désérialisé dans toutes les versions de .NET :

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

Version introduite

5,0

Raison du changement

L’analyse pour la désérialisation ne doit réussir que lorsque la charge utile fournie est valide pour le type cible. Pour un type char, la seule charge utile valide est une chaîne à char unique.

Lorsque vous désérialisez JSON dans une cible char, assurez-vous que la chaîne se compose d’un seul char.

API affectées