私はjsonハッシュからキーを表示しようとしていますPerl:ハッシュからキーの注文を保存するには?
実行後、私はすべてのキーを表示しましたが、順序は異なります。私はその時点で立ち往生した。
キーの順序を保存する可能性はありますか?
お手数をおかけします。
ありがとうございました。
私はjsonハッシュからキーを表示しようとしていますPerl:ハッシュからキーの注文を保存するには?
実行後、私はすべてのキーを表示しましたが、順序は異なります。私はその時点で立ち往生した。
キーの順序を保存する可能性はありますか?
お手数をおかけします。
ありがとうございました。
リストを作成し、各リスト要素に2つのフィールド(キーと値)を持つ別のリストを追加することができます。これは実質的に順序付けられたハッシュです。
#!/usr/bin/perl
%json = qw(key1 value1 key2 value2 key3 value3);
my $result = "keys => { \n";
for my $key (keys %json) {
$result .= "$key\n";
}
$result .= " }\n\n";
print $result;
my $json=[];
for my $key (sort keys %json) {
my @list =();
push(@list,$key);
push(@list,$json{$key});
push(@$json,\@list);
}
for (@$json) {
print $_->[0], " ", $_->[1], "\n";
}
定義上ハッシュは順序がありません。これは、PerlハッシュとJSON構造に当てはまります。 Perlでは、ハッシュ内のキーの順序は、ハッシュに追加された方法と同じではない場合があります。 2つのJSON構造は互いに同等であることができますが、同じではありません。
特定の順序でキーが必要な場合は、sort
を使用して、調べる順序でキーを並べ替えることができます。
別の配列などのように、別々に保存する必要があります。ハッシュのポイントは重要なキーの順序を持たないことです。 – AntonH
@AntonHしたがって、jsonのハッシュの代わりに配列を使用する方法はありますか?私はその順序を保存できますか? – Kais
次に、解析されたデータを格納するためにハッシュを使用せず、代わりに配列に格納します。 JSONモジュールを解析に使用して、ホイールを再開発しようとしないでください。 – dgw