Dela via


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.

När du deserialiserar JSON till ett char mål kontrollerar du att strängen består av en enda char.

Berörda API:er