Для десериализации символа в 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
.