Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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.