Dela via


Egenskaper av typen Nullable JsonDocument avserialiseras till JsonValueKind.Null

Från och med .NET 9, deserialisera null JSON-värden till JsonDocument resulterar i icke-null-dokument av typen JsonValueKind.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 });

Version introducerad

.NET 9

Tidigare beteende

I .NET 8 och tidigare versioner ger deserialisering null JSON-värden till JsonDocument tillbaka null resultat.

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

Nytt beteende

Från och med .NET 9 ger deserialisering null JSON-värden till JsonDocument tillbaka icke-null-instanser av JsonValueKind.Null.

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

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

Den här ändringen åtgärdar en inkonsekvens mellan JSON-null på rotnivå och kapslade null-värden i ett dokument. Det gör det också förenligt med beteendet för de JsonDocument.Parse metoderna. Beteendet att returnera null ansågs vara en bugg och uppdaterades för att anpassas till det förväntade utfallet.

Uppdatera kod som använder deserialiserade objekt som innehåller JsonDocument typer för att förvänta sig JsonValueKind.Null i stället för null.

Berörda API:er