Partager via


Les propriétés JsonDocument nullables sont désérialisées en JsonValueKind.Null

À partir de .NET 9, la désérialisation des valeurs JSON null en JsonDocument produit des documents non nuls de type 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 introduite

.NET 9

Comportement précédent

Dans .NET 8 et les versions antérieures, la désérialisation des valeurs JSON null dans JsonDocument renvoie des résultats null.

var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.

Nouveau comportement

À compter de .NET 9, la désérialisation des valeurs JSON null en JsonDocument renvoie des instances non-nulles de JsonValueKind.Null.

var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.

Type de changement cassant

Ce changement est un changement de comportement.

Raison de la modification

Cette modification résout une incohérence entre les valeurs NULL JSON au niveau racine et les valeurs Null imbriquées dans un document. Il le rend également cohérent avec le comportement des JsonDocument.Parse méthodes. Le comportement de retour null a été considéré comme un bogue et mis à jour pour l’alignement avec le résultat attendu.

Mettez à jour le code qui utilise des objets désérialisés contenant des types JsonDocument afin qu'il attende JsonValueKind.Null plutôt que null.

API affectées