Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Rekommenderad åtgärd
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.