У нас есть устройство с API, которое возвращает строки JSON.Я хочу иметь доступ к определенным частям JSON, но не могу понять, как заставить работать синтаксис.
use strict;
use warnings;
use CGI qw(:standard);
use LWP::Simple;
use JSON qw(decode_json);
use Data::Dumper;
my $json_request = 'http://<device ip>/API?method=Display:Input:Status:All:Get';
my $raw_json = get $(json_request)
print($raw_json)
# Output: {"result":{"0":{"status":false},"1":{"status":false},"2":{"status":false},"3":{"status":false},"4":{"type":"unknown","status":true}},"jsonrpc":"2.0"}
Я пытался использовать функцию decode_json библиотеки JSON вместе с Data ::Dumper, но вот что я получаю:
print(Dumper(decode_json($raw_json)));
# Output: $VAR1 = { 'jsonrpc' => '2.0', 'result' => { '4' => { 'status' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), 'type' => 'unknown' }, '1' => { 'status' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ) }, '3' => { 'status' => $VAR1->{'result'}{'1'}{'status'} }, '0' => { 'status' => $VAR1->{'result'}{'1'}{'status'} }, '2' => { 'status' => $VAR1->{'result'}{'1'}{'status'} } } };
Мало того, что это кажется еще более искаженным, и он не обрабатывает некоторые элементы должным образом, я не могу получить доступ к элементам того или другогоВывод дампера или переменная raw_json.По общему признанию, я новичок в Perl, но я попробовал весь синтаксис, который только могу придумать, и не могу понять.
Я хотел бы иметь возможность просто иметь таблицу со строками от 0 до4, который просто говорит «true» или «false» в зависимости от записи для этого конкретного элемента JSON.Например, результат JSON:
0: False
1: False
2: False
3: False
4: True