Freigeben über


JsonDocument-Eigenschaften, die Nullwerte zulassen, werden zu JsonValueKind.Null deserialisiert

Ab .NET 9 führt die Deserialisierung von null JSON-Werten in JsonDocument zu Dokumenten vom Typ JsonValueKind.Null, die nicht null sind.

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 });

Eingeführte Version

.NET 9

Vorheriges Verhalten

In .NET 8 und früheren Versionen gibt das Deserialisieren von null JSON-Werten zu JsonDocumentnull Ergebnisse zurück.

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

Neues Verhalten

Ab .NET 9 führt die Deserialisierung von null JSON-Werten in JsonDocument zu nicht-null Instanzen von JsonValueKind.Null.

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

Art der einschneidenden Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

Diese Änderung behebt eine Inkonsistenz zwischen JSON-Nullen auf Stammebene und geschachtelten Nullen in einem Dokument. Es macht es auch konsistent mit dem Verhalten der JsonDocument.Parse Methoden. Das Verhalten der Rückgabe null wurde als Fehler eingestuft und aktualisiert, um dem erwarteten Ergebnis zu entsprechen.

Aktualisieren Sie den Code, der deserialisierte Objekte verwendet, die JsonDocument-Typen enthalten, sodass er JsonValueKind.Null anstelle von null erwartet.

Betroffene APIs