Condividi tramite


CA2026: preferisce JsonElement.Parse su JsonDocument.Parse(). RootElement

Proprietà Value
ID della regola CA2026
Titolo Preferisce JsonElement.Parse rispetto a JsonDocument.Parse().RootElement
Categoria Affidabilità
La correzione causa un'interruzione o meno Non-breaking
Abilitato per impostazione predefinita in .NET 10 Come suggerimento

Motivo

Il codice usa JsonDocument.Parse().RootElement per analizzare JSON in un oggetto JsonElement.

Descrizione regola

JsonElement.Parse è più efficiente della chiamata JsonDocument.Parse().RootElementa . Il JsonDocument tipo implementa IDisposable e noleggia matrici da ArrayPool<T>, che può causare perdite di memoria o un aumento della pressione GC se non si elimina correttamente il documento. Il JsonElement.Parse metodo, introdotto in .NET 10, analizza JSON direttamente in un JsonElement senza queste preoccupazioni, rendendolo più efficiente e meno soggetto a errori.

Come correggere le violazioni

Sostituire le chiamate a JsonDocument.Parse().RootElement con JsonElement.Parse().

Esempi

Il frammento di codice seguente mostra una violazione di 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

Il frammento di codice seguente corregge la violazione:

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

Quando eliminare gli avvisi

Non eliminare gli avvisi da questa regola. Se si usa .NET 10 o versione successiva, è consigliabile usare JsonElement.Parse() per migliorare le prestazioni e la gestione delle risorse.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche