我有一个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样式查询匹配,以提取适合特定文本块的所有响应?
提前致谢!
答案 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;
请注意,由于@Maxx指出了他的评论,你应该在服务器端实现这个逻辑,并且为了性能做一些分页,因为10,000
是一个非常大的数字。
答案 1 :(得分:0)
在javascript中非常简单
首先将对象转换为数组。
使用每个功能并比较日期
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;
注意:此代码未经过测试可能会出现语法错误