Json.NET串流處理大型JSON檔
解析龐大的JSON檔案可能會因為記憶體限製而面臨挑戰。 Json.NET提供了一種串流處理這些檔案的方法,可以漸進式讀取和處理資料。
逐個物件流式處理
當處理包含一系列相同物件的JSON檔案時,最好一次解析和處理一個物件。為此,避免反序列化到C#列表中。 可以使用以下程式碼:
<code class="language-csharp">JsonSerializer serializer = new JsonSerializer(); MyObject o; using (FileStream s = File.Open("bigfile.json", FileMode.Open)) using (StreamReader sr = new StreamReader(s)) using (JsonReader reader = new JsonTextReader(sr)) { while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { o = serializer.Deserialize<MyObject>(reader); // 处理对象 o } } }</code>
此程式碼透過僅在遇到物件的起始標記{
時才進行反序列化來簡化物件解析。
處理巢狀物件和清單
如問題所述,JSON物件包含巢狀的物件和清單。 Json.NET的「物件優先」解析會跳過這些元素,因此如果需要,您需要手動反序列化它們。為此,請遍歷每個物件的屬性並根據需要處理巢狀資料。
以上是Json.NET 如何有效率地串流和解析大型 JSON 文件,處理巢狀物件和清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!