>백엔드 개발 >C++ >JSON.NET에서 연결된 JSON 개체의 스트림을 역직렬화하는 방법은 무엇입니까?

JSON.NET에서 연결된 JSON 개체의 스트림을 역직렬화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-09 21:28:47440검색

How to Deserialize a Stream of Concatenated JSON Objects in JSON.NET?

JSON.NET을 사용하여 JSON 개체 스트림 구문 분석

구분 기호 없이 연결된 JSON 개체 스트림을 역직렬화할 때 문제는 JSON.NET을 사용하여 이를 올바르게 처리하는 방법입니다.

시도한 솔루션에는 스트림 리더, JSON 텍스트 리더 및 사용자 정의 루프를 사용하여 스트림을 IEnumerable로 역직렬화하는 것이 포함됩니다. 그러나 이 메소드에서 예상치 못한 'EndObject' 태그를 나타내는 예외가 발생했습니다.

이 문제를 해결하려면 루프를 일부 수정해야 합니다.

<code class="language-csharp">public IEnumerable<TResult> ReadJson<TResult>(Stream stream)
{
    var serializer = new JsonSerializer();

    using (var reader = new StreamReader(stream))
    using (var jsonReader = new JsonTextReader(reader))
    {
        jsonReader.SupportMultipleContent = true;

        while (jsonReader.Read())
        {
            yield return serializer.Deserialize<TResult>(jsonReader);
        }
    }
}</code>

반환된 IEnumerable은 스트림이 열려 있는 동안 반복되어야 한다는 점에 유의하는 것이 중요합니다.

<code class="language-csharp">using (var stream = /* some stream */)
{
    IEnumerable<MyClass> result = ReadJson<MyClass>(stream);

    foreach (var item in result)
    {
        Console.WriteLine(item.MyProperty);
    }
}</code>

이 기술은 dotnetfiddle 웹사이트(https://www.php.cn/link/a3b1c195e3033e5086eb7482c0942e4a.

)에 있습니다.

위 내용은 JSON.NET에서 연결된 JSON 개체의 스트림을 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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