ホームページ >バックエンド開発 >C++ >JSON.NETで連結されたJSONオブジェクトのストリームを逆シリアル化する方法は?

JSON.NETで連結されたJSONオブジェクトのストリームを逆シリアル化する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-09 21:28:47503ブラウズ

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 Web サイト (

https://www.php.cn/link/a3b1c195e3033e5086eb7482c0942e4a.) にあります。

以上がJSON.NETで連結されたJSONオブジェクトのストリームを逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。