Freigeben über


CA2026: Prefer JsonElement.Parse over JsonDocument.Parse(). RootElement

Eigentum Wert
Regel-ID CA2026
Title Verwenden Sie JsonElement.Parse anstelle von JsonDocument.Parse().RootElement
Kategorie Reliability
Korrektur ist blockierend oder nicht-blockierend Non-breaking
Standardmäßig in .NET 10 aktiviert Als Vorschlag

Ursache

Code verwendet JsonDocument.Parse().RootElement zum Parsen von JSON in ein JsonElement.

Regelbeschreibung

JsonElement.Parse ist effizienter als anrufe JsonDocument.Parse().RootElement. Der JsonDocument Typ implementiert und mietet IDisposable Arrays aus dem ArrayPool<T>, was zu Speicherlecks oder erhöhtem GC-Druck führen kann, wenn Sie das Dokument nicht ordnungsgemäß entsorgen. Die in .NET 10 eingeführte JsonElement.Parse-Methode analysiert JSON direkt in ein JsonElement und beseitigt dabei diese Bedenken, was sie effizienter und weniger fehleranfällig macht.

Wie man Verstöße behebt

Ersetzen Sie Anrufe durch JsonDocument.Parse().RootElementJsonElement.Parse().

Examples

Der folgende Codeausschnitt zeigt einen Verstoß gegen 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

Der folgende Codeausschnitt behebt die Verletzung:

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

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnungen von dieser Regel. Wenn Sie auf .NET 10 oder höher abzielen, sollten Sie dies für eine bessere Leistung und Ressourcenverwaltung verwenden JsonElement.Parse() .

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Deaktivieren Sie die Regel für eine Datei, einen Ordner oder ein Projekt, indem Sie den Schweregrad in der none auf setzen.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch