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

Parsing JSON data based on partial element response

本文关键字:JSON 数据 响应 于部 元素      更新时间:2023-09-26

我有一个JSON响应其中大约有10,000个响应都是这种格式

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

我希望能够根据部分响应的匹配提取符合特定标准的响应

例如,我想要得到的是在4am-5am期间发生的所有登录

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

"LogonTime": "2016-08-09T04:48:00"

我如何与(例如使用Javascript)匹配JSON中的部分或开始与样式查询,以取出适合特定文本块的所有响应?

提前感谢!

你可以使用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);

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

在javascript中非常简单

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

  2. 使用每个函数并比较日期

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));
}
});

注意:这段代码没有经过测试,可能会出现语法错误