次の方法で共有


Null 許容 JsonDocument プロパティの JsonValueKind.Null への逆シリアル化

.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