Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| 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.