.NET 9 以降では、 null
JSON 値を JsonDocument に逆シリアル化すると、 JsonValueKind.Null型の null 以外のドキュメントが作成されます。
using System.Text.Json;
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
// Returns true in .NET 8 and false in .NET 9.
Console.WriteLine(doc is null);
// Returns false in .NET 8 and true in .NET 9.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null });
導入されたバージョン
.NET 9
以前の動作
.NET 8 以前のバージョンでは、null
JSON 値を JsonDocument
に逆シリアル化すると、null
結果が返されます。
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
新しい動作
.NET 9 以降では、 null
JSON 値を JsonDocument
に逆シリアル化すると、 JsonValueKind.Null
の null 以外のインスタンスが返されます。
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
この変更により、ドキュメント内のルート レベルの JSON null と入れ子になった null の間の不整合に対処します。 また、 JsonDocument.Parse メソッドの動作と一貫性を持たせます。
null
を返す動作はバグと見なされ、予想される結果に合わせて更新されました。
推奨されるアクション
JsonDocument
型を含む逆シリアル化されたオブジェクトを使用するコードをJsonValueKind.Null
ではなくnull
を期待するように更新。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET