我有一个包含服务器日志记录数据的 json 数组。使用 flot 我正在绘制图表,我已经成功地完成了 40 多个 json 对象。
我观察到数组中有 581901 个元素。 当我尝试解析时,浏览器崩溃了。 json 数据的大小约为 55MB。使用的浏览器是FF。有什么有效的方法可以做到这一点?
从 581901 行中提取 JSON 样本
{"date":"30-May-2016:00:00:00","url":"retriveImage","status":"200","data":"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]);
}
最佳答案
在解析 JSON 文件或 XML 文件时,您有两种选择。您可以完全在内存数据结构(树模型)中读取文件,这允许轻松随机访问所有数据。或者您可以以流方式处理文件。在这种情况下,解析器可以通过推出事件来进行控制(就像 XML SAX 解析器的情况一样),或者应用程序可以从解析器中提取事件。第一个的优点是很容易链接多个处理器,但很难实现。第二种的优点是它很容易编程,而且当你有需要的时候你可以停止解析。
看看这个:
https://www.ngdata.com/parsing-a-large-json-file-efficiently-and-easily/
关于javascript - 解析巨大的json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544970/