Bagikan melalui


Properti JsonDocument yang dapat bernilai null akan diubah ke JsonValueKind.Null

Dimulai dengan .NET 9, deserialisasi nilai JSON null menjadi JsonDocument menghasilkan dokumen non-null jenis 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 yang diperkenalkan

.NET 9

Perilaku sebelumnya

Di .NET 8 dan versi yang lebih lama, deserialisasi null nilai JSON ke dalam JsonDocument mengembalikan hasil null.

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

Perilaku baru

Mulai dari .NET 9, deserialisasi null nilai JSON ke dalam JsonDocument mengembalikan instans non-null JsonValueKind.Null.

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

Jenis perubahan mendasar

Perubahan ini adalah perubahan perilaku .

Alasan perubahan

Perubahan ini mengatasi ketidakkonsistensian antara JSON tingkat akar null dan null berlapis dalam dokumen. Ini juga menjadikannya konsisten dengan perilaku metode JsonDocument.Parse. Perilaku pengembalian null dianggap bug dan diperbaiki agar sesuai dengan hasil yang diharapkan.

Perbarui kode yang menggunakan objek deserialisasi yang berisi jenis JsonDocument untuk mengharapkan JsonValueKind.Null alih-alih null.

API yang terpengaruh