Reputation: 13334
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.
Upvotes: 9
Views: 38180
Reputation: 9016
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);
Upvotes: 3
Reputation: 943585
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.
Upvotes: 12