Partilhar via


CA2026: Prefira JsonElement.Parse ao invés de JsonDocument.Parse().RootElement

Propriedade Valor
ID da regra CA2026
Título Prefira JsonElement.Parse em vez de JsonDocument.Parse().RootElement
Categoria Reliability
A correção é invasiva ou não invasiva Non-breaking
Habilitado por padrão no .NET 10 Como sugestão

Motivo

O código usa JsonDocument.Parse().RootElement para analisar JSON em um JsonElementarquivo .

Descrição da regra

JsonElement.Parse é mais eficiente do que ligar JsonDocument.Parse().RootElement. O JsonDocument tipo implementa IDisposable e aloca matrizes do ArrayPool<T>, o que pode provocar vazamentos de memória ou aumentar a pressão sobre o GC se o documento não for descartado corretamente. O JsonElement.Parse método, introduzido no .NET 10, analisa JSON diretamente em um JsonElement sem essas preocupações, tornando-o mais eficiente e menos propenso a erros.

Como corrigir violações

Substitua chamadas para JsonDocument.Parse().RootElement por JsonElement.Parse().

Examples

O trecho de código a seguir mostra uma violação do 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

O trecho de código a seguir corrige a violação:

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 suprimir avisos

Não suprima avisos desta regra. Se estiveres a direcionar o .NET 10 ou posterior, deverás utilizar JsonElement.Parse() para um melhor desempenho e gestão de recursos.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também