Vlastnosti JsonDocument, které mohou mít hodnotu Null, se deserializují na JsonValueKind.Null.
Počínaje rozhraním .NET 9 deserializace null
hodnot JSON do JsonDocument vede k nenulovým dokumentům typu 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 });
Verze byla představena
.NET 9
Předchozí chování
V .NET 8 a starších verzích deserializace null
hodnot JSON do JsonDocument
vrací null
výsledky.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
Nové chování
Počínaje .NET 9, deserializace hodnot JSON z null
na JsonDocument
vrací nenulové instance JsonValueKind.Null
.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Tato změna adresuje problém nekonzistence mezi null hodnotami na kořenové úrovni a vnořenými null hodnotami v dokumentu. Je také konzistentní s chováním metod JsonDocument.Parse. Chování vrácení null
bylo považováno za chybu a bylo aktualizováno tak, aby odpovídalo očekávanému výsledku.
Doporučená akce
Aktualizujte kód, který využívá deserializované objekty obsahující typy JsonDocument
, aby očekával místo null
typy JsonValueKind.Null
.