Compartir vía


CA2026: se prefiere JsonElement.Parse sobre JsonDocument.Parse(). RootElement

Propiedad Importancia
Identificador de la regla CA2026
Título Preferir JsonElement.Parse que JsonDocument.Parse().RootElement
Categoría Reliability
La corrección es disruptiva o no disruptiva Non-breaking
Habilitado de forma predeterminada en .NET 10 Como sugerencia

Causa

El código usa JsonDocument.Parse().RootElement para analizar JSON en un JsonElement.

Descripción de la regla

JsonElement.Parse es más eficaz que llamar a JsonDocument.Parse().RootElement. El tipo JsonDocument implementa IDisposable y arrienda matrices de ArrayPool<T>, lo que puede provocar pérdidas de memoria o una mayor presión sobre el GC si no gestionas correctamente la eliminación del documento. El JsonElement.Parse método, introducido en .NET 10, analiza JSON directamente en un JsonElement sin estos problemas, lo que hace que sea más eficaz y menos propenso a errores.

Cómo corregir infracciones

Reemplace las llamadas a por JsonDocument.Parse().RootElementJsonElement.Parse().

Examples

El fragmento de código siguiente muestra una infracción de 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

El siguiente fragmento de código corrige la infracción:

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

Cuándo suprimir las advertencias

No suprima advertencias de esta regla. Si tiene como destino .NET 10 o posterior, debe usar JsonElement.Parse() para mejorar el rendimiento y la administración de recursos.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

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

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.

Consulte también