Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Vastgoed | Waarde |
|---|---|
| Regel-ID | CA2026 |
| Titel | Voorkeur JsonElement.Parse boven JsonDocument.Parse().RootElement |
| Categorie | Reliability |
| De oplossing veroorzaakt brekende of niet-brekende problemen | Non-breaking |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
Oorzaak
Code gebruikt JsonDocument.Parse().RootElement om JSON te parseren in een JsonElement.
Beschrijving van regel
JsonElement.Parse is efficiënter dan het aanroepen van JsonDocument.Parse().RootElement. Het JsonDocument type implementeert IDisposable en huurt matrices van de ArrayPool<T>, wat kan leiden tot geheugenlekken of verhoogde GC-druk als u het document niet goed verwijdert. De JsonElement.Parse methode, geïntroduceerd in .NET 10, parseert JSON rechtstreeks in een JsonElement zonder deze zorgen, waardoor deze efficiënter en minder foutgevoelig is.
Hoe schendingen op te lossen
Vervang aanroepen door JsonDocument.Parse().RootElementJsonElement.Parse().
Voorbeelden
Het volgende codefragment toont een schending van 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
Met het volgende codefragment wordt de schending opgelost:
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
Wanneer waarschuwingen onderdrukken
Onderdrukt geen waarschuwingen van deze regel. Als u zich richt op .NET 10 of hoger, moet u gebruikmaken van JsonElement.Parse() voor betere prestaties en resourcebeheer.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.