System.Text.Json kräver en teckensträng för att deserialisera ett tecken
Om du vill deserialisera en Char med måste System.Text.JsonJSON-strängen innehålla ett enda tecken.
Ändra beskrivning
I tidigare .NET-versioner deserialiseras en multisträngchar
i JSON till en egenskap eller ett char
fält. Endast den första char
av strängen används, som i följande exempel:
// .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\"");
I .NET 5 och senare orsakar allt annat än en enskildchar
sträng att en JsonException genereras när deserialiseringsmålet är ett char
. Följande exempelsträng deserialiseras i alla .NET-versioner:
// Correct usage.
char deserializedChar = JsonSerializer.Deserialize<char>("\"a\"");
Version introducerad
5,0
Orsak till ändringen
Parsning för deserialisering bör endast lyckas när den angivna nyttolasten är giltig för måltypen. För en char
typ är den enda giltiga nyttolasten en endachar
sträng.
Rekommenderad åtgärd
När du deserialiserar JSON till ett char
mål kontrollerar du att strängen består av en enda char
.