4

私はPerlの初心者であり、このJSONデータをループして、画面に出力したいと思っています。

どうやってやるの?

$arr = '[{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}]';
4

3 に答える 3

12

JSONまたはJSON::XSを使用して、JSONをPerl構造にデコードします。

簡単な例:

use strict;
use warnings;

use JSON::XS;

my $json = '[{"Year":"2012","Quarter":"Q3","DataType":"Other 3","Environment":"STEVE","Amount":125},{"Year":"2012","Quarter":"Q4","DataType":"Other 2","Environment":"MIKE","Amount":500}]';

my $arrayref = decode_json $json;

foreach my $item( @$arrayref ) { 
    # fields are in $item->{Year}, $item->{Quarter}, etc.
}
于 2012-07-25T02:52:41.420 に答える
10

ハッシュの配列があります。

use JSON::XS qw( decode_json );

my $records = decode_json($json_text);
for my $record (@$records) {
   for my $key (keys(%$record)) {
      my $val = $record->{$key};
      say "$key: $val";
    }
}

JSON :: XS

于 2012-07-25T03:01:46.493 に答える
1

これがCPANのパッケージで、 JSON.pmというトリックを実行する必要があります。

解析すると、他のPerl参照と同じように扱うことができます。

$perl_scalar = $json->decode($json_text)

ドキュメンテーション

エンコードの反対:JSONテキストを期待して解析を試み、結果の単純なスカラーまたは参照を返します。エラー時の鳴き声。

JSONの数値と文字列は単純なPerlスカラーになります。JSON配列はPerlarrayrefsになり、JSONオブジェクトはPerlhashrefsになります。trueは1(JSON :: true)になり、falseは0(JSON :: false)になり、nullはundefになります。`

同様のスタックオーバーフローの質問: JSONでエンコードされた配列の解析

于 2012-07-25T02:49:04.187 に答える