首頁 >後端開發 >C++ >如何在 JSON.NET 中反序列化串聯 JSON 物件流?

如何在 JSON.NET 中反序列化串聯 JSON 物件流?

Susan Sarandon
Susan Sarandon原創
2025-01-09 21:28:47442瀏覽

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