एक एपीआई के लिए एक 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}]}
यहाँ क्या चल रहा है?
और क्या कोई ऐसा तरीका है जिससे मैं एक अतिरिक्त अस्थायी चर के बिना अपना वांछित उत्पादन प्राप्त कर सकता हूं?
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;
कहता है?