Le proprietà nullable di JsonDocument si deserializzano a JsonValueKind.Null
A partire da .NET 9, la deserializzazione dei valori JSON null
in JsonDocument comporta documenti non nulli di tipo 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 });
Versione introdotta
.NET 9
Comportamento precedente
In .NET 8 e versioni precedenti la deserializzazione dei valori JSON null
in JsonDocument
restituisce risultati null
.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
Nuovo comportamento
A partire da .NET 9, la deserializzazione dei valori JSON null
in JsonDocument
restituisce istanze non null di JsonValueKind.Null
.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.
Tipo di modifica che causa un'interruzione
Questa modifica è una modifica comportamentale .
Motivo della modifica
Questa modifica risolve un'incoerenza tra i valori Null a livello di radice e i valori Null annidati in un documento. Lo rende anche coerente con il comportamento dei metodi di JsonDocument.Parse. Il comportamento della restituzione di null
è stato considerato un bug e aggiornato per allinearsi al risultato atteso.
Azione consigliata
Aggiornare il codice che utilizza oggetti deserializzati contenenti tipi di JsonDocument
per attendersi JsonValueKind.Null
anziché null
.