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
Susan Sarandonasal
2025-01-09 21:28:47575semak imbas

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:

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);
        }
    }
}

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

using (var stream = /* some stream */)
{
    IEnumerable<MyClass> result = ReadJson<MyClass>(stream);

    foreach (var item in result)
    {
        Console.WriteLine(item.MyProperty);
    }
}

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!

Kenyataan:
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