Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir do .NET 9, a desserialização de valores JSON null em JsonDocument resulta em documentos não nulos do 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 });
Versão introduzida
.NET 9
Comportamento anterior
No .NET 8 e versões anteriores, a desserialização de valores JSON null para JsonDocument devolve resultados null.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
Novo comportamento
A partir do .NET 9, desserializar valores JSON de null em JsonDocument retorna instâncias não nulas 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 mudança de rutura
Esta alteração é uma mudança comportamental.
Motivo da mudança
Essa alteração aborda uma inconsistência entre nulos JSON de nível raiz e nulos aninhados em um documento. Também o torna consistente com o comportamento dos métodos JsonDocument.Parse. O comportamento de retornar null foi considerado um bug e atualizado para alinhamento com o resultado esperado.
Ação recomendada
Atualize o código que consome objetos desserializados contendo tipos JsonDocument para prever JsonValueKind.Null em vez de null.