Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghuraikan Fail JSON Bukan Standard yang Besar dengan Berbilang Tatasusunan Dengan Cekap?

Bagaimanakah Saya Boleh Menghuraikan Fail JSON Bukan Standard yang Besar dengan Berbilang Tatasusunan Dengan Cekap?

Susan Sarandon
Lepaskan: 2025-01-06 00:58:37
asal
468 orang telah melayarinya

How Can I Parse Large, Non-Standard JSON Files with Multiple Arrays Efficiently?

Menangani JSON Tidak Lengkap

Apabila menghuraikan fail JSON yang besar, adalah penting untuk mempertimbangkan kemungkinan ketidakkonsistenan dalam struktur data. Selalunya, perkhidmatan web mengembalikan respons JSON yang tidak mematuhi sepenuhnya format standard. Satu isu biasa ialah kehadiran berbilang struktur tatasusunan dalam satu fail JSON.

Isu: Struktur JSON Bukan Standard

Dalam senario khusus anda, anda menghadapi isu ini di mana data JSON mengandungi individu tatasusunan dipisahkan oleh kurungan penutup dan kurungan pembukaan. Format yang tidak teratur ini menjadikannya mustahil untuk menyahsiri keseluruhan JSON sebagai tatasusunan tunggal menggunakan kaedah konvensional seperti JsonConvert.DeserializeObject.

Penyelesaian: Penghuraian Berasaskan Strim dengan Sokongan untuk Pelbagai Kandungan

Untuk menangani cabaran ini , anda boleh memanfaatkan fleksibiliti penghuraian berasaskan aliran dalam Json.NET. Dengan mencipta JsonTextReader dan menetapkan sifat SupportMultipleContentnya kepada benar, anda membolehkan pembaca menganggap JSON sebagai berbilang blok kandungan yang berbeza.

Berikut ialah coretan kod diubah suai yang menunjukkan pendekatan ini:

using (WebClient client = new WebClient())
using (Stream stream = client.OpenRead(stringUrl))
using (StreamReader streamReader = new StreamReader(stream))
using (JsonTextReader reader = new JsonTextReader(streamReader))
{
    reader.SupportMultipleContent = true;

    var serializer = new JsonSerializer();
    while (reader.Read())
    {
        if (reader.TokenType == JsonToken.StartObject)
        {
            Contact c = serializer.Deserialize<Contact>(reader);
            Console.WriteLine(c.FirstName + " " + c.LastName);
        }
    }
}
Salin selepas log masuk

Kaedah ini membaca aliran kandungan JSON mengikut aliran, menghuraikan setiap objek sebagai entiti yang berasingan. Apabila ia menemui pendakap kerinting pembukaan, ia menyahsiri satu objek kenalan ke dalam kelas bekas Kenalan anda dan mencetak maklumat kenalan.

Kelebihan pendekatan ini ialah ia memproses data JSON secara berperingkat, tanpa cuba menghuraikan keseluruhan fail sekali gus. Ini amat berfaedah untuk fail JSON besar yang melebihi kapasiti memori yang tersedia.

Dengan menggunakan penghuraian berasaskan aliran dengan sokongan untuk berbilang kandungan, anda boleh mengendalikan struktur JSON yang tidak teratur dengan berkesan dan menghuraikan data anda dengan cekap, tanpa mengira saiznya atau kerumitan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Fail JSON Bukan Standard yang Besar dengan Berbilang Tatasusunan Dengan Cekap?. 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