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