System.Text.Json 需要使用单字符字符串才能反序列化 char
若要成功使用 System.Text.Json 反序列化 Char,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
时,除单 char
字符串以外的任何内容都会导致引发 JsonException。 以下示例字符串在所有 .NET 版本中都已成功反序列化:
// Correct usage.
char deserializedChar = JsonSerializer.Deserialize<char>("\"a\"");
引入的版本
5.0
更改原因
仅在提供的有效负载对目标类型有效时,反序列化分析才会成功。 对于 char
类型,唯一有效的有效负载是单 char
字符串。
建议的操作
将 JSON 反序列化为 char
目标时,请确保字符串包含单 char
。