首頁 > 後端開發 > C++ > 如何使用 JSON.NET 解析 .NET 中大型無效 JSON 檔案?

如何使用 JSON.NET 解析 .NET 中大型無效 JSON 檔案?

Barbara Streisand
發布: 2025-01-06 04:19:39
原創
934 人瀏覽過

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

使用JSON.NET 解析.NET 中的大型無效JSON 檔案

在本文中,我們將解決解析可能包含無效語法或無效語法的大型JSON 文件的挑戰。 Json.NET 本身不支援特定格式。

當 JSON 資料由透過關閉和開啟分隔的多個數組組成時,就會出現此問題括號而不是嵌套在單一數組中。這種與標準 JSON 語法的偏差可能會對 Json.NET 內建的反序列化方法帶來困難。

Json.NET 和無效的 JSON 資料

最初,使用 JsonConvert.DeserializeObject 解析大型 JSON 檔案可以當資料超出記憶體限制時會導致例外狀況。同樣,嘗試直接反序列化為 JArray 也可能會導致錯誤。

解決解析問題

為了有效處理這種情況,我們將利用涉及 JsonTextReader 的自訂方法。透過將 SupportMultipleContent 標誌設為 true,讀者可以識別無效的 JSON 格式並將每個陣列視為單獨的內容部分。

解析無效的JSON 資料

以下C# 程式碼示範如何實現此技術:

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);
        }
    }
}
登入後複製

透過使用此方法獨立存取每個數組,我們可以有效地逐行反序列化JSON 數據,有效克服標準Json.NET 解析方法遇到的記憶體和語法限制。

以上是如何使用 JSON.NET 解析 .NET 中大型無效 JSON 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板