Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahserialisasikan Strim Objek JSON Bercantum dalam JSON.NET?

Bagaimana untuk Menyahserialisasikan Strim Objek JSON Bercantum dalam JSON.NET?

Susan Sarandon
Lepaskan: 2025-01-09 21:28:47
asal
434 orang telah melayarinya

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

Menghuraikan strim objek JSON menggunakan JSON.NET

Apabila menyahsiri strim objek JSON yang digabungkan tanpa pembatas, masalahnya ialah cara mengendalikannya dengan betul menggunakan JSON.NET.

Penyelesaian percubaan melibatkan penggunaan pembaca strim, pembaca teks JSON dan gelung tersuai untuk menyahsiri strim menjadi IEnumerable. Walau bagaimanapun, kaedah ini menemui pengecualian yang menunjukkan teg 'EndObject' yang tidak dijangka.

Untuk membetulkan ini, beberapa pengubahsuaian perlu dibuat pada gelung:

<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>
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa IEnumerable yang dikembalikan mesti diulang sementara strim masih terbuka:

<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>
Salin selepas log masuk

Teknologi ini ada di tapak web dotnetfiddle (https://www.php.cn/link/a3b1c195e3033e5086eb7482c0942e4a.

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan Strim Objek JSON Bercantum dalam JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan