1

私が得たjson形式の情報を印刷しようとしています.私が持っているものを見せれば、すべてをよりよく説明できると思います.

foreach ...{
    printer($versions);
}

sub printer
    {
    foreach ...{
         my $results = id_cards();

    my $toJsonResult = JSON::to_json($results);
    print $toJsonResult;
    }
}

sub id_cards
{
    my $returnData = [];
    for($x=1;$y < $vehicle->{'ROWS'};$x++ )
    { 
          my $data;
          $data->{year} = $vehicle->{$x}->{'YEAR'};  #there is more $data->repetativeness but not important to get the point
          push(@$returnData,$data);

          $y++
    }

return $returnData;
}

印刷されるjson:

[{"year":"2004"},{"year":"2004"}][{"year":"2002"},{"year":"2000"},{"year":"1994"}][{"year":"2004"},{"year":"1955"}][{"year":"2004"},{"year":"1955"}]

これは私が望むものに非常に近いですが、json「オブジェクト」の分離はありませんか? (用語が何であるかはわかりません)が、有効なjsonではなくなります。それに応じてグループ化された年を有効なjsonに入れるにはどうすればよいですか。

4

3 に答える 3

2

複数のJSONテキストをループで出力しています。ループを一巡するたびに、新しい JSON テキストを出力します。

ループ内でデータ構造を構築し、その後全体を JSON に変換する必要があります。

例えば

sub printer {
    my @data;
    foreach ...{
        push(@data, id_cards());
    }
    print JSON::to_json(\@data);
}
于 2013-10-18T19:23:17.617 に答える
0

次のことを効果的に行っています。

my $result = [ { year => 2002 }, { year => 2003 } ];
my $toJsonResult = JSON::to_json($results);
print $toJsonResult;  # [{"year":"2002"},{"year":2003"}]

my $result = [ { year => 2004 }, { year => 2005 } ];
my $toJsonResult = JSON::to_json($results);
print $toJsonResult;  # [{"year":"2004"},{"year":2005"}]

my $result = [ { year => 2006 }, { year => 2007 } ];
my $toJsonResult = JSON::to_json($results);
print $toJsonResult;  # [{"year":"2006"},{"year":2007"}]

これにより、結果ごとに新しい JSON ドキュメントが作成され、それらがすべて STDOUT に詰め込まれます。

すべての結果の配列である 1 つのドキュメントを作成したいので、すべての結果を配列に配置する必要があります

my @results

my $result = [ { year => 2002 }, { year => 2003 } ];
push $results, $result;

my $result = [ { year => 2004 }, { year => 2005 } ];
push $results, $result;

my $result = [ { year => 2006 }, { year => 2007 } ];
push $results, $result;

my $toJsonResult = JSON::to_json(\@results);
print $toJsonResult;  # [[{"year":"2002"},{"year":"2003"}],
                      #  [{"year":"2004"},{"year":"2005"}],
                      #  [{"year":"2006"},{"year":"2007"}]]
于 2013-10-18T20:04:13.463 に答える