Delen via


Nullbare JsonDocument-eigenschappen deserialiseren naar JsonValueKind.Null

Vanaf .NET 9 resulteert het deserialiseren van null JSON-waarden in JsonDocument tot niet-null-documenten van het type 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 });

Versie geïntroduceerd

.NET 9

Vorig gedrag

Het deserialiseren van null JSON-waarden in JsonDocument geeft in .NET 8 en eerdere versies null resultaten.

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

Nieuw gedrag

Vanaf .NET 9 resulteert het deserialiseren van null JSON-waarden in JsonDocument in niet-nulexemplaren van JsonValueKind.Null.

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

Type wijziging die fouten veroorzaken

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Met deze wijziging wordt een inconsistentie tussen JSON-null-waarden op hoofdniveau en geneste null-waarden in een document opgelost. Het maakt het ook consistent met het gedrag van de JsonDocument.Parse methoden. Het gedrag van het retourneren van null werd beschouwd als een bug en bijgewerkt voor afstemming met het verwachte resultaat.

Werk de code bij die gedeserialiseerde objecten bevat met JsonDocument-typen, zodat deze JsonValueKind.Null verwacht in plaats van null.

Geraakte API's