在尝试为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;
该怎么说?