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

受影响的 API