Deszerializálás során a Null értékű JsonDocument tulajdonságok JsonValueKind.Null értékre állnak be.

A .NET 9-től kezdve a null JSON-értékek deszerializálása nem null értékű, JsonDocumenttípusú dokumentumokat eredményez JsonValueKind.Null-ként.

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 });

Bevezetett verzió

.NET 9

Előző viselkedés

A .NET 8 és korábbi verzióiban null JSON-értékek deszerializálása JsonDocumentnull eredményt ad vissza.

var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.

Új viselkedés

A .NET 9-től kezdve null JSON-értékek deszerializálása JsonDocument visszaadja a JsonValueKind.Nullnem null értékű példányait.

var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.

A kompatibilitástörő változás típusa

Ez a változás viselkedésbeli változás.

A változás oka

Ez a módosítás a legfelső szintű JSON-nullok és a beágyazott nullértékek közötti ellentmondást oldja meg egy dokumentumban. Összhangban van a JsonDocument.Parse metódusok viselkedésével is. A null visszatérési viselkedése hibaként lett értelmezve, és a várt eredményhez igazodva frissült.

A kód frissítése, amely deszerializált, JsonDocument típusú objektumokat használ, hogy JsonValueKind.Nullhelyett null típusra számítson.

Érintett API-k