2016-09-18 9 views
-1

Perlを使用してサーバーからJSON出力を解析しようとしています。 RESTデータの接続とダウンロードは正常です。返されたデータを解析するだけで助けが必要です。ここに私のコードの抜粋です:Perlを使用してサーバーからJSON/RESTデータを解析する方法

Lines: '{"players":[{"currentlyOnline":false,"timePlayed":160317,"name":"MarisaG","lastPlayed":1474208741470}]}' 
$VAR1 = { 
     'players' => [ 
        { 
         'currentlyOnline' => bless(do{\(my $o = 0)}, 'JSON::PP::Boolean'), 
         'timePlayed' => 160317, 
         'lastPlayed' => '1474208741470', 
         'name' => 'MarisaG' 
        } 
        ] 
    }; 

今でログインし、各プレーヤーのための「選手」の下に複数のエントリがあります:

my $response = HTTP::Tiny->new->get($SERVER_ADDR); 
if ($response->{success}) 
{ 
    my $html = $response->{content}; 
    @LINES = split /\n/, $html; 
    chomp(@LINES); 
    print("Lines: '@LINES'\n"); # ZZZ 
    my $decoded_json = decode_json($html); 
    print Dumper $decoded_json; 
} 
else 
{ 
    print "Failed: $response->{status} $response->{reasons}"; 
} 

そして、ここでは、結果があります。任意のヒント?

+0

あなたは既に 'decode_json()'でjsonを解析しました。 –

答えて

2

あなたが何を求めているのか分かりません。 decode_json()に電話をかけてJSONを解析しました。今すぐ$decoded_jsonにデータ構造があります。 Dumper()への電話でそのデータの構造が表示されます。これは、単一のキーであるplayersを持つハッシュリファレンスです。そのキーに関連付けられた値は配列参照です。参照される配列の各要素は別のハッシュです。

たとえば、すべてのプレーヤーの名前を次のようなコードで印刷することができます。

foreach (@{ $decoded_json->{players} }) { 
    say $_->{name}; 
} 
+0

接尾辞 ' - > @ *'の逆参照に関するあなたの考えは? –

+1

@Сухой27では、 'use feature'と' experimental'プラグマを必要とするのに対して、それは価値がある以上に痛いものです。コードベース全体で採用することができ、標準のinitコードでは常に使用しますが、短い例には含まれません。 – ysth

+0

これはまさに私が探していたものでした。ありがとう! –

関連する問題