Sdílet prostřednictvím


CA2026: Preferujete JsonElement.Parse před JsonDocument.Parse(). RootElement

Vlastnictví Hodnota
Identifikátor pravidla CA2026
Titul Raději JsonElement.Parse než JsonDocument.Parse().RootElement
Kategorie Reliability
Oprava je destruktivní nebo nedestruktivní Non-breaking
Povoleno ve výchozím nastavení v .NET 10 Jako návrh

Příčina

Kód používá JsonDocument.Parse().RootElement k parsování FORMÁTU JSON do objektu JsonElement.

Popis pravidla

JsonElement.Parse je efektivnější než volání JsonDocument.Parse().RootElement. Typ JsonDocument implementuje IDisposable a pronajímá pole z ArrayPool<T>, což může vést k únikům paměti nebo zvýšenému tlaku na GC, pokud dokument správně neuzavřete. Metoda JsonElement.Parse představená v .NET 10 parsuje JSON přímo do JsonElement bez těchto obav, takže je efektivnější a méně náchylná k chybám.

Jak opravit porušení

Nahraďte volání JsonDocument.Parse().RootElement za JsonElement.Parse().

Examples

Následující fragment kódu ukazuje porušení 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

Následující fragment kódu opraví porušení zásad:

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

Kdy potlačit upozornění

Nepotlačujte upozornění z tohoto pravidla. Pokud cílíte na .NET 10 nebo novější, měli byste použít JsonElement.Parse() pro lepší výkon a správu prostředků.

Potlačte upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také