基于部分元素响应解析JSON数据

时间:2016-08-18 09:33:38

标签: javascript html json

我有一个JSON响应,其中包含大约10,000个响应,以这种特殊格式

Python.File

我希望能够根据部分回复的匹配来提取符合特定条件的回复

例如我想要获得的是在凌晨4点至凌晨5点发生的所有登录

这可以通过查询以下内容来实现:

{"SessionName": "rdp-tcp", "userid": "TEST:3:09-48-16-04-48-00", "ComputerName": "SERVER1", "LogonTime": "2016-08-09T04:48:00"}

如何(例如使用Javascript)与JSON中的partial或startswith样式查询匹配,以提取适合特定文本块的所有响应?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.filter()根据LogonTime过滤您的数组,获取Date.prototype.getUTCHours()小时:



var json = [{
        "SessionName": "rdp-tcp",
        "userid": "TEST:3:09-48-16-04-48-00",
        "ComputerName": "SERVER1",
        "LogonTime": "2016-08-09T02:48:00"
    }, {
        "SessionName": "rdp-tcp",
        "userid": "TEST:3:09-48-16-04-48-00",
        "ComputerName": "SERVER1",
        "LogonTime": "2016-08-09T03:48:00"
    }, {
        "SessionName": "rdp-tcp",
        "userid": "TEST:3:09-48-16-04-48-00",
        "ComputerName": "SERVER1",
        "LogonTime": "2016-08-09T04:48:00"
    }],
    arrResult = json.filter(function(elem) {
        var date = new Date(elem.LogonTime),
            hour = date.getUTCHours();
        return hour >= 4 && hour <= 5;
    });

console.log(arrResult);
&#13;
&#13;
&#13;

请注意,由于@Maxx指出了他的评论,你应该在服务器端实现这个逻辑,并且为了性能做一些分页,因为10,000是一个非常大的数字。

答案 1 :(得分:0)

在javascript中非常简单

  1. 首先将对象转换为数组。

  2. 使用每个功能并比较日期

  3. &#13;
    &#13;
    var logons = [];
    
    yourObject.each(function (child){
      if(Date.parse(child['LogonTime']) > Date.parse('01/01/2011 04:00:00') && Date.parse(child['LogonTime']) > Date.parse('01/01/2011 5:00:00')){
        logons.push($(this));
    }
    });
    &#13;
    &#13;
    &#13;

    注意:此代码未经过测试可能会出现语法错误