我有一个 JSON 响应,其中包含大约 10,000 个响应,全部采用这种特定格式
{"SessionName": "rdp-tcp", "userid": "TEST:3:09-48-16-04-48-00", "ComputerName": "SERVER1", "LogonTime": "2016-08-09T04:48:00"}
我希望能够根据部分响应的匹配提取符合特定条件的响应
例如,我要获取的是凌晨 4 点到 5 点期间发生的所有登录
这可以通过查询以下内容来实现:
"LogonTime": "2016-08-09T04:48:00"
我如何(例如使用 Javascript)匹配 JSON 中的部分或 startswith 样式查询以提取适合特定文本 block 的所有响应?
提前致谢!
最佳答案
您可以使用 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 - 根据部分元素响应解析JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39014686/