Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do .NET 9, desserializar 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, desserializar valores JSON null em JsonDocument retorna resultados null.
var doc = JsonSerializer.Deserialize<JsonDocument>("null");
Console.WriteLine(doc is null); // True.
Novo comportamento
A partir do .NET 9, desserializar valores JSON null em JsonDocument devolve 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 alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração aborda uma inconsistência entre nulos JSON de nível raiz e nulos aninhados em um documento. Ele 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
Atualizar o código que consome objetos desserializados que contêm JsonDocument tipos a serem esperados JsonValueKind.Null em vez de null.