I have trouble parsing a json object with perl and I don't know if the issue is coming from the json or my script. Here is the json:
test.json
{
"count":3,
"entries":
[
{
"id":85,
"application":AuditExampleLogin1,
"user":admin,
"time":"2011-11-22T10:29:37.422Z",
"values":
null
},
{
"id":87,
"application":AuditExampleLogin1,
"user":admin,
"time":"2011-11-22T10:30:56.235Z",
"values":
null
},
{
"id":89,
"application":AuditExampleLogin1,
"user":admin,
"time":"2011-11-22T10:33:15.000Z",
"values":
null
}
]
}
Here the script:
script.pl
#!/usr/bin/perl -w
use strict;
use JSON;
open FILE, 'test.json' or die "Could not open file inputfile: $!";
sysread(FILE, my $result, -s FILE);
close FILE or die "Could not close file: $!";
my @json = @{decode_json($result)};
And finally the error I'm getting:
error
malformed JSON string, neither array, object, number, string or atom,
at character offset 86 (before "AuditExampleLogin1,\n...") at
./script.pl line 7.
Q: Can someone tell me whether the issue is coming from the json or my script and what to change in either case?
FYI the json is coming from Alfresco auditing api.
This:
"application":AuditExampleLogin1,
… is invalid JSON. AuditExampleLogin1
isn't an array, object, number, string or atom. I don't know what it is supposed to be, so I can't tell you what to change it to.
If it is a string, then you need to enclose it in "
.
See also: JSON Lint.
It works if the Audit... and admin values are quoted. The line
my @json = @{decode_json($result)};
needs to be just
my @json = decode_json($result);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With