次のコードでは、クラスをハッシュに結びつけています。Perlでは、JSONエンコーディングの数値と文字列のハッシュ値をどのように区別できますか?
package Example::Tie;
use JSON;
my $json = JSON->new();
sub TIEHASH {
my ($pkg,@list) = @_;
bless { @list }, $pkg;
}
sub FETCH {
my ($tied,$key) = @_;
return $json->encode({key => $key});
}
package Example;
sub new {
my ($pkg,@list) = @_;
my $self = {};
tie %$self, 'Example::Tie', @list;
bless $self, $pkg;
}
package main;
my $exp = Example->new();
print($exp->{0} . "\n");
私は次のような出力が得られます:0
でこれが結果
{"key":"0"}
文字列としてエンコードされているFETCH
機能では、私は、キーのJSON
エンコーディングを印刷しています。代わりに番号にエンコードする方法はありますか?
print($exp->{0} . "\n"); # this should print {"key":0}
print($exp->{'0'} . "\n"); # this should print {"key":"0"}
関連性:https://metacpan.org/pod/JSON#simple-scalars – simbabque