Perl анализирует JSON с массивом внутри - PullRequest
1 голос
/ 06 октября 2019

Привет, я новичок в perl и разборе json. Ниже приведен вывод json из DB API.


{
  "limit": 50,
  "page": 1,
  "result": [
    {
      "var1": "var1_1",
      "var2": "var2_1",
      "created_at": "2019-10-06T15:52:37.705950+00:00",
      "id": 2,
      "updated_at": "2019-10-06T15:52:37.705950+00:00",
      "var3": "var3_1"
    },
    {
      "var1": "var1_2",
      "var2": "var2_2",
      "created_at": "2019-10-06T14:17:35.951395+00:00",
      "id": 1,
      "updated_at": "2019-10-06T14:17:35.951395+00:00",
      "var3": "var3_1"
      }
    ],
  "success": true,
  "total_results": 2
}

Как получить var1 из последнего идентификатора (здесь 2).?

Я попробовал вот так ниже.

    use LWP::Simple;
    $contents = get($db_url);
    print "$contents\n";  # print the above output
    my $fromjson = from_json($contents);
    my $data1 = $fromjson->{'limit'};
    print "$data1"; # print properly 50
    my $data2 = $fromjson->{'result'};
    my $data1 = to_json($data2);
    my $data_var1=$data1->{'var1'}; # Tried like this but not getting proper output

Пожалуйста, помогите, я пробовал разные способы, но не проходил.

1 Ответ

2 голосов
/ 06 октября 2019

my $data2 = $fromjson->{'result'}; возвращает ссылку на массив. Вы можете узнать о ссылках в Справочнике по Perl .

Если вы просто хотите получить первый элемент в результатах, сначала получите массив ref.

my $results = $fromjson->{result};

Затемпервый результат, который является ссылкой на хеш.

my $first_result = $results->[0];

И, наконец, получите значение ключа var1.

my $var1 = $first_result->{var1};

Вы также можете связать это вместе, хотя это приводит к ошибкеобработка сложнее.

my $var1 = $from_json->{result}[0]{var1};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...