Tôi gặp sự cố khi phân tích cú pháp đối tượng json với perl và tôi không biết vấn đề có xuất phát từ json hay tập lệnh của tôi hay không. Đây là json:chuỗi JSON không đúng định dạng, không phải mảng, đối tượng, số, chuỗi hoặc nguyên tử
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
}
]
}
đây kịch bản:
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)};
Và cuối cùng là lỗi tôi nhận được:
lỗi
malformed JSON string, neither array, object, number, string or atom,
at character offset 86 (before "AuditExampleLogin1,\n...") at
./script.pl line 7.
Hỏi: Ai đó có thể cho tôi biết sự cố xảy ra từ json hoặc tập lệnh của tôi và điều gì sẽ thay đổi trong cả hai trường hợp?
FYI số json is coming from Alfresco auditing api.
AFAIK đó là không hợp lệ JSON, thiếu dấu ngoặc kép quanh các giá trị. – Mat
Tôi đã xử lý chính xác cùng một vấn đề. Tôi có một câu hỏi cho tác giả chủ đề: làm thế nào để bạn truy cập các biến @json? Tôi tiếp tục nhận được rằng @ json là một HASH trong bộ nhớ nhưng tôi không thể truy cập các biến hoặc vòng máng nó. –