Compartir a través de


Las propiedades de JsonDocument que pueden ser nulas se deserializan a JsonValueKind.Null.

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.

Actualice el código que consume objetos deserializados que contienen tipos JsonDocument para que esperen JsonValueKind.Null en lugar de null.

Las APIs afectadas