Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menghuraikan Fail JSON yang Besar dan Tidak Sah dalam .NET dengan JSON.NET?

Bagaimana untuk Menghuraikan Fail JSON yang Besar dan Tidak Sah dalam .NET dengan JSON.NET?

Barbara Streisand
Barbara Streisandasal
2025-01-06 04:19:39957semak imbas

How to Parse Large, Invalid JSON Files in .NET with JSON.NET?

Menghuraikan Fail JSON Tidak Sah Besar 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.

Json.NET dan Data JSON Tidak Sah

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.

Menyelesaikan Isu Penghuraian

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.

Menghuraikan Data JSON Tidak Sah

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!

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