Sdílet prostřednictvím


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.

Aktualizujte kód, který využívá deserializované objekty obsahující typy JsonDocument, aby očekával místo nulltypy JsonValueKind.Null.

Ovlivněná rozhraní API