2016-05-31 116 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/