Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de .NET 9, la deserialización null de valores JSON en JsonDocument da como resultado documentos que no son NULL de 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 });
Versión introducida
.NET 9
Comportamiento anterior
En .NET 8 y versiones anteriores, deserializar valores JSON null en JsonDocument devuelve resultados null.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
Nuevo comportamiento
A partir de .NET 9, deserializar null los valores JSON en JsonDocument devuelve instancias que no son NULL de JsonValueKind.Null.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // False.
Console.WriteLine(doc is { RootElement.ValueKind: JsonValueKind.Null }); // True.
Tipo de cambio disruptivo
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio aborda una incoherencia entre los valores NULL JSON de nivel raíz y los valores NULL anidados en un documento. También hace que sea coherente con el comportamiento de los JsonDocument.Parse métodos. El comportamiento de devolver null se consideró un error y se actualizó para la alineación con el resultado esperado.
Acción recomendada
Actualice el código que consume objetos deserializados que contienen tipos JsonDocument para que esperen JsonValueKind.Null en lugar de null.