APIのJSONメッセージを作成しようとしているときに、簡単だと思った何かを実行するのに苦労しました。次のようなメッセージを作成する必要がありました。
{ "list": [ { "foo": 1, "bar": 2 } ] }
しかし、私の最初の試みはうまくいきませんでした:
say to-json { foo => [ { a => 1, b => 2 } ] };
# {"foo":[{"a":1},{"b":2}]}
物事を単純化しようとすると、さらに混乱しました:
say { foo => [ { a => 1 } ] };
# {foo => [a => 1]}
# Note that this is not JSON, but I expected to see curly braces
次に、いくつかの一時変数を使用しようとしましたが、うまくいきました:
my @list = { a => 1 };
say to-json { foo => @list };
# {"foo":[{"a":1}]}
my %hash = ( a => 1 );
say to-json { foo => [ %hash ] };
# {"foo":[{"a":1}]}
何が起きてる?
そして、追加の一時変数なしで希望の出力を達成できる方法はありますか?
うーん、そうだね。私が何かを試していたときに私は物事を誤解したと思います。でも、
—
jja
say to-json { foo => [ a => 1 ] }
出力{"foo":[{"a":1}]}
誰が私はそれを得たとき、私が今までやった場合、私は、入力した内容を知っているので。悪い!
say to-json { foo => [ { a => 1 } ] };
{"foo":[{"a":1}]}
ではなく、のように出力する必要があります{"foo":["a":1]}
。後者はタイプミスですよね?そうでない場合、何をsay $*PERL.compiler.version;
言いますか?