Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menghuraikan Fail JSON yang Besar dan Tidak Sah dalam .NET dengan JSON.NET?
Dalam artikel ini, kami akan menangani cabaran menghuraikan fail JSON besar yang mungkin mengandungi sintaks tidak sah atau format khusus yang tidak disokong secara asli oleh Json.NET.
Isu timbul apabila data JSON terdiri daripada berbilang tatasusunan dipisahkan dengan menutup dan membuka kurungan dan bukannya bersarang dalam tatasusunan tunggal. Sisihan daripada sintaks JSON standard ini boleh menyebabkan kesukaran untuk kaedah penyahserikatan terbina dalam Json.NET.
Pada mulanya, menggunakan JsonConvert.DeserializeObject untuk menghuraikan fail JSON yang besar boleh membawa kepada pengecualian apabila data melebihi had memori. Begitu juga, percubaan untuk menyahsiri terus ke JArray juga boleh mengakibatkan ralat.
Untuk mengendalikan senario ini dengan berkesan, kami akan menggunakan pendekatan tersuai yang melibatkan JsonTextReader. Dengan menetapkan bendera SupportMultipleContent kepada benar, pembaca boleh mengenali format JSON yang tidak sah dan menganggap setiap tatasusunan sebagai bahagian kandungan yang berasingan.
Kod C# berikut menunjukkan cara untuk laksanakan teknik 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); } } }
Dengan mengakses setiap tatasusunan secara bebas menggunakan kaedah ini, kami boleh menyahsiri secara cekap Data JSON baris demi baris, dengan berkesan mengatasi had memori dan sintaks yang dihadapi dengan kaedah penghuraian Json.NET standard.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Fail JSON yang Besar dan Tidak Sah dalam .NET dengan JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!