Bagikan melalui


CA2026: Lebih suka JsonElement.Parse daripada JsonDocument.Parse(). RootElement

Harta benda Nilai
Identifikasi Aturan CA2026
Title Lebih disukai JsonElement.Parse daripada JsonDocument.Parse().RootElement
Kategori Keandalan
Perbaikan bersifat merusak atau tidak merusak Non-breaking
Diaktifkan secara default di .NET 10 Sebagai saran

Penyebab

Kode menggunakan JsonDocument.Parse().RootElement untuk mengurai JSON ke dalam JsonElement.

Deskripsi aturan

JsonElement.Parse lebih efisien daripada memanggil JsonDocument.Parse().RootElement. JsonDocument jenis ini mengimplementasikan IDisposable dan meminjam array dari ArrayPool<T>, yang bisa berujung pada kebocoran memori atau meningkatnya tekanan GC jika Anda tidak membuang dokumen dengan benar. Metode JsonElement.Parse yang diperkenalkan dalam .NET 10, menguraikan JSON langsung ke dalam JsonElement tanpa masalah ini, membuatnya lebih efisien dan kurang rawan kesalahan.

Cara memperbaiki pelanggaran

Ganti panggilan ke JsonDocument.Parse().RootElement dengan JsonElement.Parse().

Examples

Cuplikan kode berikut menunjukkan pelanggaran CA2026:

public static void ProcessJsonViolation(string json)
{
    JsonElement element = JsonDocument.Parse(json).RootElement;
    //...
}
Public Sub ProcessJsonViolation(json As String)
    Dim element As JsonElement = JsonDocument.Parse(json).RootElement
    '...
End Sub

Cuplikan kode berikut memperbaiki pelanggaran:

public static void ProcessJsonFixed(string json)
{
    JsonElement element = JsonElement.Parse(json);
    //...
}
Public Sub ProcessJsonFixed(json As String)
    Dim element As JsonElement = JsonElement.Parse(json)
    '...
End Sub

Kapan harus menekan peringatan

Jangan mengabaikan peringatan dari aturan ini. Jika Anda menargetkan .NET 10 atau yang lebih baru, Anda harus menggunakan JsonElement.Parse() untuk performa dan manajemen sumber daya yang lebih baik.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Lihat juga