嗨,请帮助我尝试使用 perl 从 Hikvision Face Scan 获取 AcsEvent。现在数据返回是。
{
"AcsEvent": {
"searchID": "1",
"responseStatusStrg": "MORE",
"numOfMatches": 5,
"totalMatches": 13430,
"InfoList": [
{
"major": 2,
"minor": 1024,
"time": "2021-12-02T10:45:33+07:00",
"netUser": "",
"remoteHostAddr": "0.0.0.0",
"cardNo": "",
"cardType": 0,
"name": "",
"reportChannel": 0,
"cardReaderKind": 0,
"cardReaderNo": 0,
"doorNo": 0,
"verifyNo": 0,
"alarmInNo": 0,
"alarmOutNo": 0,
"caseSensorNo": 0,
"RS485No": 0,
"multiCardGroupNo": 0,
"deviceNo": 0,
"employeeNoString": "",
"InternetAccess": 0,
"type": 0,
"MACAddr": "",
"swipeCardType": 0,
"serialNo": 1,
"userType": "normal",
"currentVerifyMode": "invalid",
"attendanceStatus": "undefined",
"statusValue": 0,
"mask": "unknown"
},
{
"major": 5,
"minor": 22,
"time": "2021-12-02T10:45:33+07:00",
"netUser": "",
"remoteHostAddr": "0.0.0.0",
"cardNo": "",
"cardType": 0,
"name": "",
"reportChannel": 0,
"cardReaderKind": 0,
"cardReaderNo": 0,
"doorNo": 1,
"verifyNo": 0,
"alarmInNo": 0,
"alarmOutNo": 0,
"caseSensorNo": 0,
"RS485No": 0,
"multiCardGroupNo": 0,
"deviceNo": 0,
"employeeNoString": "",
"InternetAccess": 0,
"type": 0,
"MACAddr": "",
"swipeCardType": 0,
"serialNo": 2,
"userType": "normal",
"currentVerifyMode": "invalid",
"attendanceStatus": "undefined",
"statusValue": 0,
"mask": "unknown"
},
{
"major": 5,
"minor": 75,
"time": "2021-12-02T10:53:49+07:00",
"netUser": "",
"remoteHostAddr": "0.0.0.0",
"cardNo": "",
"cardType": 1,
"name": "user1",
"reportChannel": 0,
"cardReaderKind": 0,
"cardReaderNo": 1,
"doorNo": 1,
"verifyNo": 0,
"alarmInNo": 0,
"alarmOutNo": 0,
"caseSensorNo": 0,
"RS485No": 0,
"multiCardGroupNo": 0,
"deviceNo": 0,
"employeeNoString": "1",
"InternetAccess": 0,
"type": 0,
"MACAddr": "",
"swipeCardType": 0,
"serialNo": 3,
"userType": "normal",
"currentVerifyMode": "cardOrFaceOrFp",
"attendanceStatus": "undefined",
"statusValue": 0,
"mask": "no",
"pictureURL": "http://192.168.1.11:8/LOCALS/pic/acsLinkCap/202112_00/02_105349_30075_0.jpeg@WEB000000000619",
"picturesNumber": 1
},
{
"major": 5,
"minor": 21,
"time": "2021-12-02T10:53:49+07:00",
"netUser": "",
"remoteHostAddr": "0.0.0.0",
"cardNo": "",
"cardType": 0,
"name": "",
"reportChannel": 0,
"cardReaderKind": 0,
"cardReaderNo": 0,
"doorNo": 1,
"verifyNo": 0,
"alarmInNo": 0,
"alarmOutNo": 0,
"caseSensorNo": 0,
"RS485No": 0,
"multiCardGroupNo": 0,
"deviceNo": 0,
"employeeNoString": "",
"InternetAccess": 0,
"type": 0,
"MACAddr": "",
"swipeCardType": 0,
"serialNo": 4,
"userType": "normal",
"currentVerifyMode": "invalid",
"attendanceStatus": "undefined",
"statusValue": 0,
"mask": "unknown"
},
{
"major": 5,
"minor": 75,
"time": "2021-12-02T10:53:52+07:00",
"netUser": "",
"remoteHostAddr": "0.0.0.0",
"cardNo": "",
"cardType": 1,
"name": "user1",
"reportChannel": 0,
"cardReaderKind": 0,
"cardReaderNo": 1,
"doorNo": 1,
"verifyNo": 0,
"alarmInNo": 0,
"alarmOutNo": 0,
"caseSensorNo": 0,
"RS485No": 0,
"multiCardGroupNo": 0,
"deviceNo": 0,
"employeeNoString": "1",
"InternetAccess": 0,
"type": 0,
"MACAddr": "",
"swipeCardType": 0,
"serialNo": 5,
"userType": "normal",
"currentVerifyMode": "cardOrFaceOrFp",
"attendanceStatus": "undefined",
"statusValue": 0,
"mask": "no",
"pictureURL": "http://192.168.1.11:8/LOCALS/pic/acsLinkCap/202112_00/02_105352_30075_0.jpeg@WEB000000000620",
"picturesNumber": 1
}
]
}
}
我需要获取时间、姓名、cardNo、pictureURL
结果变成了这个样子。
2021-12-02T10:45:33+07:00 NULL NULL NULL
2021-12-02T10:45:33+07:00 NULL NULL NULL
2021-12-02T10:53:52+07:00 NULL user1 http://192.168.1.11:8/LOCALS/pic/acsLinkCap/202112_00/02_105349_30075_0.jpeg@WEB000000000619
2021-12-02T10:53:49+07:00 NULL NULL NULL
2021-12-02T10:53:52+07:00 NULL user1 http://192.168.1.11:8/LOCALS/pic/acsLinkCap/202112_00/02_105352_30075_0.jpeg@WEB000000000620
我该怎么办。谢谢
编辑我可以由 Dave Cross 修复它。现在在这里我的代码。
#!/bin/perl
use JSON;
use feature qw(say);
use strict;
use warnings;
my $json = '{
"AcsEvent": {
"searchID": "1",
"responseStatusStrg": "MORE",
"numOfMatches": 5,
"totalMatches": 13430,
"InfoList": [
{
....cut off data ......
}
]
}
}';
my $data = JSON->new->decode($json);
my @infolist = @{ $data->{AcsEvent}{InfoList} };
for my $item (@infolist) {
say $item->{time};
say $item->{cardNo};
say $item->{name};
say $item->{pictureURL};
}