System.Text.Json では、char の逆シリアル化に 1 文字の文字列が必要です

System.Text.Json を利用して Char を正常に逆シリアル化するには、JSON 文字列に 1 文字を含める必要があります。

変更内容

以前のバージョンの .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 が 1 つの文字列以外を渡すと、逆シリアル化のターゲットが char のとき、JsonException がスローされます。 次の例の文字列は、すべての .NET バージョンで正常に逆シリアル化されます。

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

導入されたバージョン

5.0

変更理由

逆シリアル化の解析は、指定されたペイロードがターゲットの型に対して有効なときにのみ、成功しなければなりません。 char 型の場合、有効なペイロードは char が 1 つの文字列のみです。

JSON を char ターゲットに逆シリアル化するとき、文字列が 1 つの char で構成されるようにしてください。

影響を受ける API