다음을 통해 공유


CA2026: JsonDocument.Parse()보다 JsonElement.Parse를 선호합니다. RootElement

재산 가치
규칙 아이디 CA2026
Title 더 선호합니다 JsonElement.Parse을(를) JsonDocument.Parse().RootElement보다
범주 Reliability
수정 사항이 문제를 해결하고 있는지 혹은 새로운 문제를 일으키지 않는지 여부 Non-breaking
.NET 10에서 기본적으로 사용하도록 설정 제안 사항

원인

코드는 JsonDocument.Parse().RootElement을 사용하여 JSON을 JsonElement로 구문 분석합니다.

규칙 설명

JsonElement.Parse 를 호출하는 JsonDocument.Parse().RootElement것보다 더 효율적입니다. 이 유형은 IDisposable을(를) 구현하고 배열을 ArrayPool<T>에서 대여하므로 문서를 제대로 처리하지 않으면 메모리 누수 또는 GC 압력 증가가 발생할 수 있습니다. .NET 10에 도입된 이 메서드는 JSON을 JsonElement.Parse를 통해 직접 JsonElement으로 구문 분석하여 그러한 문제 없이 더 효율적이고 오류 발생 가능성이 적습니다.

위반을 해결하는 방법

호출을 .로 JsonDocument.Parse().RootElement바꾸기 JsonElement.Parse()

예시

다음 코드 조각은 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

다음 코드 조각은 위반을 해결합니다.

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

경고를 표시하지 않는 경우

이 규칙의 경고를 무시하지 마세요. .NET 10 이상을 대상으로 하는 경우 성능 및 리소스 관리를 향상하는 데 사용해야 JsonElement.Parse() 합니다.

경고 표시 안 함

단일 위반을 억제하려면, 소스 파일에 전처리기 지시문을 추가하여 규칙을 비활성화한 다음 다시 활성화하세요.

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

파일, 폴더 또는 프로젝트에 대한 규칙을 비활성화하려면 none에서 해당 심각도를 로 설정하세요.

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

자세한 내용은 코드 분석 경고를 표시하지 않는 방법을 참조하세요.

참고하십시오