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
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET