2016-05-31 115 views
3

我有一個包含服務器日誌數據的單個json數組。使用flot我正在繪製圖表,我已經成功完成了40多萬個json對象。解析巨大的json數據

我觀察到陣列中有581901個元素。 當我嘗試解析瀏覽器崩潰。 json數據的大小約爲55MB。使用的瀏覽器是FF。任何有效的方法來做到這一點?

樣品JSON出的581901行

{ 「日期」: 「30月-2016:00:00:00」, 「URL」: 「retriveImage」, 「狀態」: 「200」 「數據」: 「7480」}

我這樣做:

for(var i=0;i<da.length;i++){ 
     var ts = moment(da[i].date,"D-MMM-YYYY");var ts1 = moment("30-May-2016","D-MMM-YYYY"); 
     if(ts.isSame(ts1)){ 
     var hour = parseInt(moment(da[i].date,"D-MMM-YYYY H:mm:ss").format("H")); 
       var code =parseInt(da[i].status); 
       if(code<500){ 
        ct200++; 
       }else{ 
        if(code==503){ 
         e503++; 
        }else{ 
         eoth++; 
        } 
        ct503++; 
       } 
     } 
     two.push([hour,ct200]); 
     five.push([hour,ct503]); 
     } 
+0

你有沒有發現這個問題還沒有解決的辦法? –

回答

0

當解析JSON文件,或與此有關的XML文件,你有兩個選擇。您可以完全在內存數據結構(樹模型)中讀取文件,從而可以輕鬆隨機訪問所有數據。或者您可以以流媒體的方式處理文件。在這種情況下,可以通過推出事件來控制解析器(就像XML SAX解析器一樣)或者應用程序可以從解析器中提取事件。第一個優點是很容易鏈接多個處理器,但實現起來相當困難。第二個優點是編程相當簡單,當你有所需要時你可以停止解析。

看一看這樣的:

https://www.ngdata.com/parsing-a-large-json-file-efficiently-and-easily/