Bir API için JSON mesajı oluşturmaya çalışırken kendimi basit olacağını düşündüğüm bir şey yapmakta zorlandım. Aşağıdaki gibi bir mesaj oluşturmak gerekiyordu:
{ "list": [ { "foo": 1, "bar": 2 } ] }
Ancak, ilk denemem işe yaramadı:
say to-json { foo => [ { a => 1, b => 2 } ] };
# {"foo":[{"a":1},{"b":2}]}
İşleri basitleştirmeye çalışmak beni daha çok şaşırttı:
say { foo => [ { a => 1 } ] };
# {foo => [a => 1]}
# Note that this is not JSON, but I expected to see curly braces
Sonra bazı geçici değişkenleri kullanmaya çalıştım ve işe yaradı:
my @list = { a => 1 };
say to-json { foo => @list };
# {"foo":[{"a":1}]}
my %hash = ( a => 1 );
say to-json { foo => [ %hash ] };
# {"foo":[{"a":1}]}
Burada neler oluyor?
Ekstra geçici değişken olmadan istediğim çıktıyı elde edebilmemin bir yolu var mı?
say to-json { foo => [ a => 1 ] }
Çıktılar bile, {"foo":[{"a":1}]}
bunu aldığımda ne yazdığımı kim bilebilir ki, eğer yaparsam. Benim hatam!
say to-json { foo => [ { a => 1 } ] };
gibi bir şey çıkarmalı{"foo":[{"a":1}]}
, değil{"foo":["a":1]}
. İkincisi bir yazım hatası değil mi? Değilse, nesay $*PERL.compiler.version;
diyor?