একটি এপিআই-এর জন্য একটি জেএসএন বার্তা তৈরি করার চেষ্টা করার সময়, আমি নিজেকে এমন কিছু করার জন্য সংগ্রাম করতে দেখলাম যা আমি সাধারণ বলে মনে করি। আমার নীচের মত একটি বার্তা তৈরি করা প্রয়োজন:
{ "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;
বলে?