Condividi tramite


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.

Aggiornare il codice che utilizza oggetti deserializzati contenenti tipi di JsonDocument per attendersi JsonValueKind.Null anziché null.

API interessate