>백엔드 개발 >C++ >JSON.NET을 사용하여 .NET에서 크고 유효하지 않은 JSON 파일을 구문 분석하는 방법은 무엇입니까?

JSON.NET을 사용하여 .NET에서 크고 유효하지 않은 JSON 파일을 구문 분석하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-06 04:19:39953검색

How to Parse Large, Invalid JSON Files in .NET with JSON.NET?

JSON.NET을 사용하여 .NET에서 유효하지 않은 대형 JSON 파일 구문 분석

이 기사에서는 유효하지 않은 구문을 포함할 수 있는 대형 JSON 파일을 구문 분석하는 문제에 대해 설명합니다. Json.NET에서 기본적으로 지원되지 않는 특정 형식.

JSON 데이터가 닫는 대괄호와 여는 대괄호로 구분된 여러 배열로 구성된 경우 문제가 발생합니다. 단일 배열 내에 중첩되는 대신. 표준 JSON 구문과의 이러한 차이로 인해 Json.NET에 내장된 역직렬화 방법에 문제가 발생할 수 있습니다.

Json.NET 및 잘못된 JSON 데이터

처음에는 JsonConvert.DeserializeObject를 사용하여 대용량 JSON 파일을 구문 분석할 수 있습니다. 데이터가 메모리 제한을 초과하면 예외가 발생합니다. 마찬가지로 JArray로 직접 역직렬화하려고 시도하면 오류가 발생할 수도 있습니다.

파싱 문제 해결

이 시나리오를 효과적으로 처리하기 위해 JsonTextReader와 관련된 사용자 정의 접근 방식을 활용하겠습니다. SupportMultipleContent 플래그를 true로 설정하면 리더가 잘못된 JSON 형식을 인식하고 각 배열을 별도의 콘텐츠 섹션으로 처리할 수 있습니다.

잘못된 JSON 데이터 구문 분석

다음 C# 코드는 방법을 보여줍니다. 이 기술을 구현하십시오.

using (WebClient client = new WebClient())
using (Stream stream = client.OpenRead(stringUrl))
using (StreamReader streamReader = new StreamReader(stream))
using (JsonTextReader reader = new JsonTextReader(streamReader))
{
    reader.SupportMultipleContent = true;

    var serializer = new JsonSerializer();
    while (reader.Read())
    {
        if (reader.TokenType == JsonToken.StartObject)
        {
            Contact c = serializer.Deserialize<Contact>(reader);
            Console.WriteLine(c.FirstName + " " + c.LastName);
        }
    }
}

이 방법을 사용하여 각 배열에 독립적으로 액세스하면 다음과 같이 JSON 데이터 라인을 효율적으로 역직렬화할 수 있습니다. 라인을 사용하여 표준 Json.NET 구문 분석 방법에서 발생하는 메모리 및 구문 제한을 효과적으로 극복합니다.

위 내용은 JSON.NET을 사용하여 .NET에서 크고 유효하지 않은 JSON 파일을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.