Пытаясь создать сообщение JSON для API, я столкнулся с трудностями, пытаясь сделать что-то, что, на мой взгляд, было бы простым. Мне нужно было создать сообщение, подобное следующему:
{ "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}]}
Что тут происходит?
И есть ли способ, которым я могу достичь желаемого результата без дополнительной временной переменной?
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;
говорит?