Для десериализации символа в System.Text.Json требуется строка из одного символа

Для успешной десериализации Char с помощью System.Text.Jsonстрока JSON должна содержать один символ.

Описание изменения

В предыдущих версиях .NET строка из нескольких char в JSON успешно десериализуется в свойство char или поле. Используется только первый char строки, как показано в следующем примере:

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

В .NET 5 и более поздних версиях передача любой строки, кроме строки с одним char, приводит к вызову исключения JsonException, если целевым объектом десериализации является char. Следующий пример строки успешно десериализуется во всех версиях .NET:

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

Представленные версии

5,0

Причина изменения

Синтаксический анализ для сериализации должен выполняться только тогда, когда предоставленные полезные данные допустимы для целевого типа. Для типа char единственным допустимым набором полезных данных является строка с одним char.

При десериализации JSON в целевой объект char убедитесь, что строка состоит из одного char.

Затронутые API