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.
Aanbevolen actie
Werk de code bij die gedeserialiseerde objecten bevat met JsonDocument
-typen, zodat deze JsonValueKind.Null
verwacht in plaats van null
.