Mam problem z analizą obiektu JSON za pomocą języka Perl i nie wiem, czy problem pochodzi z jsona czy z mojego skryptu. Oto json:źle sformatowany ciąg znaków JSON, ani tablica, obiekt, liczba, ciąg ani atom
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
}
]
}
tutaj skrypt:
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)};
I wreszcie błąd Dostaję:
error
malformed JSON string, neither array, object, number, string or atom,
at character offset 86 (before "AuditExampleLogin1,\n...") at
./script.pl line 7.
P: Czy ktoś może mi powiedzieć, czy problem pochodzi z jsona, czy z mojego skryptu i co należy zmienić w obu przypadkach?
FYI the json is coming from Alfresco auditing api.
AFAIK to nie jest ważne JSON, brakujące cudzysłowy wokół wartości. – Mat
Miałem do czynienia z dokładnie tym samym problemem. Mam pytanie do autora wątku: w jaki sposób uzyskujesz dostęp do zmiennych @json? Ciągle dostaję, że @json jest HASH w pamięci, ale nie mam dostępu do zmiennych lub pętli przez to. –