System.Text.Json kräver en teckensträng för att deserialisera ett tecken

Om du vill deserialisera en Char med System.Text.Json måste JSON-strängen innehålla ett enda tecken.

Ändra beskrivning

I tidigare versioner av .NET deserialiseras en sträng med flera värden i JSON på ett framgångsrikt sätt till en egenskap eller ett 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 lanserad

5,0

Orsak till ändring

Parsning för deserialisering bör endast lyckas när den angivna nyttolasten är giltig för måltypen. För typen char är den enda giltiga nyttolasten en enda char 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