2017-06-09 9 views
-2

したがって、json形式の出力のカール出力を取り、それを変数に割り当てました。perl - >ハッシュのjson文字列を解析します。

my $catcherJSON = decode_json $response->content; 
print Dumper $catcherJSON; 

私は$ catcherJSONを表示すると、私はハッシュの配列を見てみたいが、私はちょうどJSONの大規模な文字列を取得します。

$VAR1 = [ 
     { 
     'priority' => 5, 
     'ingestPath' => '/vg/24CHVOD_en', 
... 
... 
... 
     }, 
     { 
     'priority' => 5, 
     'ingestPath' => 
... 
... 
     }, 
     { 
     'priority' => 5, 
     'ingestPath' => 

... 
... 
     }, 
     { 
     'priority' => 5, 
     'ingestPath' => 

... 
...}, 
     { 
     'priority' => 5, 
     'ingestPath' => 
    .... 
    ...     
     } 
    ]; 

ハッシュは繰り返し(約300ユニークな結果があります)と私は単純にハッシュの私の配列に、この1つの文字列を分割する方法をperlで把握しようとしています。

私はこれを適切な配列のハッシュに簡単に変換できるので、どのようにしてもそれを繰り返すことができますか?

ありがとうございます。

答えて

3

私はこれを適切な配列のハッシュに簡単に変換できるので、どのようにしてもそれを繰り返すことができますか?

すでに完了しています。

私はjson形式の出力のカール出力を取り、それを変数に割り当てました。正しくはありません

my $catcherJSON = decode_json $response->content;` 

$response->contentからJSON形式の文字列を取り出し、JSONをPerlデータ構造にデコードして$catcherJSONに格納しました。

私が$ catcherJSONを見ると、ハッシュの配列が見たいですが、ちょうどjsonという膨大な文字列があります。

$catcherJSONはJSONの文字列ではありません。 $catcherJSONは、ハッシュのPerl配列です。あなたは既にdecode_jsonのPerlデータ構造にJSONをデコードしました。それはあなたがそれを読むことができるようにDumper()によってPerlコードに戻ってフォーマットされています。

あなたのコードは問題ありません。たとえば、$catcherJSON->[0]{ingestPath}'/vg/24CHVOD_en'になります。

+0

'Dumper()によってPerlコードにフォーマットされています.' - 文字列に変換されました。 –

+0

これは私を助けてくれてとても感謝しています。 –

+0

もう一つのエラーが投げられるので、もう少し助けが必要です。もう一度チェックする必要があり、今表示されているエラーを投稿します。 –

0
my $catcherJSON = $response->content; 
$catcherJSON =~ s/\n//g; 
$catcherJSON = decode_json($catcherJSON); 

これは私の最終的な解決策でした。 curlレスポンスが来ると、すべてのjsonに改行があります。改行が削除されるとすぐに、私のdecode_jsonは$ catcherJSON - > [0] {id}などのようにすべてを返します。

皆さん、ありがとうございました。 非常に高く評価されています。