若要使用 Char 成功反序列化 System.Text.Json,JSON 字符串必须包含一个字符。
更改描述
在以前的 .NET 版本中,JSON 中的多char
字符串已成功反序列化为 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
字符串组成。