在.NET 中解析大型JSON 檔案可能是一個挑戰,特別是在JSON 結構非標準的情況下。使用 JsonConvert.Deserialize 方法時遇到的常見問題是它可能會引發大檔案異常。
當 JSON 檔案包含一個陣列後面跟著另一個沒有分隔符號的陣列時,通常會出現此問題。這種格式在 JSON 無效,導致 JsonConvert.Deserialize 失敗。
為了解決這個問題,Json.NET 提供了 JsonTextReader 類,它可以更靈活地解析 JSON 內容。透過在 JsonTextReader 中將 SupportMultipleContent 標誌設為 true,我們可以將單一 JSON 檔案中的多個陣列解析為單獨的物件。
以下是演示此技術的更新程式碼範例:
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。
完整演示,請參閱以下連結:https://dotnetfiddle.net/2TQa8p
以上是如何在 .NET 中高效解析大型多數組 JSON 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!