JSON फ़ंक्शन
इस पर लागू होता है: कैनवास ऐप्स
मॉडल-संचालित ऐप्स
Power Pages
तालिका, रिकॉर्ड या मान के लिए एक JSON पाठ स्ट्रिंग बनाता है.
वर्णन
JSON फ़ंक्शन एक डेटा संरचना के JavaScript ऑब्जेक्ट नोटेशन (JSON) प्रस्तुतिकरण को पाठ के रूप में देता है, ताकि यह समूचे नेटवर्क में भंडारित या संचारित के लिए उपयुक्त हो जाए. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf और IETF RFC 8259 प्रारूप का वर्णन करते हैं, जिसका व्यापक रूप से JavaScript और अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग किया जाता है।
कैनवास ऐप्स उन डेटा प्रकारों का समर्थन करता है, जो इस तालिका में उनके पाठ प्रस्तुतिकरण के साथ सूचीबद्ध हैं:
डेटा प्रकार | वर्णन | परिणाम उदाहरण |
---|---|---|
बूलियन | सत्य या असत्य। | true |
रंग | स्ट्रिंग जिसमें रंग के लिए 8-अंकीय हेक्साडेसिमल प्रस्तुतिकरण शामिल है. यह प्रस्तुतिकरण #rrggbbaa स्वरूप लेता है, जहाँ rr लाल घटक है, gg हरा है, bb नीला है, और aa अल्फा चैनल है. अल्फा चैनल के लिए, 00 पूर्णतः पारदर्शी है, और ff पूर्णतः अपारदर्शी है. आप स्ट्रिंग को ColorValue फ़ंक्शन पर पास कर सकते हैं. | "#102030ff" |
मुद्रा | वह संख्या, जो उपयोगकर्ता की भाषा के लिए उपयुक्त दशमलव विभाजक का उपयोग करती है. यदि आवश्यक हो तो वैज्ञानिक नोटेशन का उपयोग किया जाता है. | 1.345 |
तारीख | स्ट्रिंग जिसमें दिनांक ISO 8601 yyyy-mm-dd स्वरूप में शामिल है. | "2019-03-31" |
दिनांक समय | स्ट्रिंग, जिसमें ISO 8601 दिनांक/समय शामिल है. दिनांक/समय मान UTC में हैं, क्योंकि समाप्ति "Z" इंगित करता है. | "2019-03-31T22:32:06.822Z" |
GUID | स्ट्रिंग, जिसमें GUID मान है. अक्षर लोअरकेस हैं. | "751b58ac-380e-4a04-a925-9f375995cc40" |
छवि, मीडिया | यदि JSONFormat.IncludeBinaryData निर्दिष्ट किया गया है, तो मीडिया फ़ाइलें एक स्ट्रिंग में एन्कोड की जाती हैं। http: या https: URL का उपयोग करने वाले वेब संदर्भ संशोधित नहीं किए जाते. इन-मेमोरी बाइनरी डेटा के संदर्भ "data:mimetype;base64,..." स्वरूप द्वारा एन्कोडेड होते हैं. इन-मेमोरी डेटा में वे छवियाँ, जिन्हें उपयोगकर्ता कैमरा नियंत्रण के उपयोग द्वारा कैप्चर करते हैं और appres: और blob: URL योजनाओं वाले कोई भी अन्य संदर्भ शामिल होते हैं. | "data:image/jpeg;base64,/9j/4AA..." |
संख्या | वह संख्या, जो उपयोगकर्ता की भाषा के लिए उपयुक्त दशमलव विभाजक का उपयोग करती है. यदि आवश्यक हो तो वैज्ञानिक नोटेशन का उपयोग किया जाता है. | 1.345 |
विकल्प सेट | पसंद का अंकीय मान, प्रदर्शन के लिए उपयोग किए जाने वाले लेबल का नहीं. संख्यात्मक मान का उपयोग किया जाता है क्योंकि यह भाषा निरपेक्ष है. | 1001 |
समय | स्ट्रिंग जिसमें एक ISO 8601 hh:mm:ss.fff स्वरूप होता है. | "23:12:49.000" |
अभिलेख | कॉमा डीलिमिटेड सूची, फ़ील्ड और उनके मानों की { और } के बीच की. यह नोटेशन कैनवास ऐप्स में रिकॉर्ड से मिलता-जुलता है, लेकिन नाम हमेशा दोहरे उद्धरण चिह्नों के बीच होता है. यह स्वरूप उन रिकॉर्ड का समर्थन नहीं करता, जो अनेक-से-एक संबंधों पर आधारित हैं. | { "First Name": "Fred", "Age": 21 } |
मेज़ | कॉमा-डीलिमिटेड सूची, रिकॉर्ड की [ और ] के बीच की. यह स्वरूप उन तालिकाओं का समर्थन नहीं करता, जो अनेक-से-एक संबंधों पर आधारित हैं. JSONFormat.FlattenValueTables विकल्प का उपयोग करके Value नामक स्तंभ वाली एकल स्तंभ तालिकाओं के लिए रिकॉर्ड निकालें। | [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] |
दो विकल्प | दो विकल्प सही या गलत के बूलियन मूल्य, प्रदर्शन के लिए उपयोग किया जाने वाले लेबल नहीं. बूलियन मान का उपयोग किया जाता है क्योंकि यह भाषा निरपेक्ष है. | false |
हाइपरलिंक, पाठ | दोहरे उद्धरण चिह्नों के बीच स्ट्रिंग. फ़ंक्शन बैकस्लैश के साथ एम्बेडेड दोहरे-उद्धरण चिह्न को एस्केप करता है, न्यूलाइन को "\n" द्वारा प्रतिस्थापित करता है, और अन्य मानक JavaScript प्रतिस्थापन बनाता है. | "This is a string." |
परिणाम कितना पठनीय है और कैसे असमर्थित और बाइनरी डेटा प्रकारों को हैंडल किया जाता है, यह नियंत्रित करने के लिए वैकल्पिक स्वरूप तर्क निर्दिष्ट करें. डिफ़ॉल्ट रूप से, आउटपुट यथासंभव कॉम्पैक्ट है, जिसमें कोई अनावश्यक रिक्त स्थान या न्यूलाइन नहीं है, और असमर्थित डेटा प्रकार और बाइनरी डेटा की अनुमति नहीं होती. यदि आप & ऑपरेटर निर्दिष्ट करते हैं तो आप एकाधिक प्रारूपों को संयोजित कर सकते हैं।
JSONFormat इनम | विवरण |
---|---|
JSONFormat.कॉम्पैक्ट | डिफ़ॉल्ट. आउटपुट यथासंभव कॉम्पैक्ट है, जिसमें कोई जोड़ा गया रिक्त स्थान या न्यूलाइन नहीं है. |
JSONFormat.FlattenValueTables | मान तालिका, [1,2,3] संकेतन के परिणामस्वरूप रिकॉर्ड वाली एक तालिका प्राप्त होती है, जहां प्रत्येक रिकॉर्ड में एक एकल मान स्तंभ होता है। JSON में, वही संकेतन तीन संख्याओं की एक सारणी को दर्शाता है। दोनों के बीच अंतर-संचालन को आसान बनाने के लिए, यह विकल्प Power Fx Value तालिका को रिकॉर्ड की सरणी के बजाय JSON अनुकूल सरणी में समतल कर देता है। |
JSONFormat.IndentFour | पठनीयता सुधारने के लिए, आउटपुट में प्रत्येक स्तंभ और नेस्टिंग स्तर के लिए एक न्यूलाइन होती है और प्रत्येक इंडेंटेशन स्तर के लिए चार रिक्त स्थानों का उपयोग किया जाता है. |
JSONFormat.IncludeBinaryData | परिणाम में छवि, वीडियो और ऑडियो-क्लिप स्तंभ शामिल हैं. यह स्वरूप नाटकीय रूप से परिणाम के आकार को बढ़ा सकता है और आपके ऐप के प्रदर्शन को घटा सकता है. |
JSONFormat.Ignoreबाइनरीडेटा | परिणाम में छवि, वीडियो या ऑडियो-क्लिप स्तंभ शामिल नहीं हैं. यदि आप न तो JSONFormat.IncludeBinaryData और न ही JSONFormat.IgnoreBinaryData निर्दिष्ट करते हैं, तो फ़ंक्शन बाइनरी डेटा मिलने पर त्रुटि उत्पन्न करता है। |
JSONFormat.IgnoreUnsupportedTypes | असमर्थित डेटा प्रकारों की अनुमति है, लेकिन परिणाम में उन्हें शामिल नहीं किया जाएगा. डिफ़ॉल्ट रूप से, असमर्थित डेटा प्रकार त्रुटि उत्पन्न करते हैं. |
परिणाम में किस डेटा को शामिल किया जाना है, यह नियंत्रित करने, और असमर्थित डेटा प्रकारों के निकालने के लिए ShowColumns और DropColumns फ़ंक्शन का उपयोग करें.
चूँकि JSON मेमोरी और गणना, दोनों गहन हो सकती है, अतः आप इस फ़ंक्शन का उपयोग केवल व्यवहार फ़ंक्शन में कर सकते हैं. आप JSON से परिणाम को उस चर में कैप्चर कर सकते हैं, जिनका उपयोग तब आप डेटा प्रवाह में कर सकते हैं.
यदि किसी स्तंभ में प्रदर्शन नाम और तार्किक नाम दोनों हैं, तो परिणाम में तार्किक नाम होता है. प्रदर्शन नाम ऐप उपयोगकर्ता की भाषा को दर्शाते हैं और इसलिए, एक सामान्य सेवा में डेटा स्थानांतरण के लिए अनुपयुक्त हैं.
सिंटैक्स
JSON( डेटा संरचना [, प्रारूप ] )
- डेटास्ट्रक्चर – आवश्यक. JSON में रूपांतरित करने के लिए डेटा संरचना. टेबल, रिकॉर्ड और प्राथमिक मान समर्थित, मनमाने ढंग से नेस्टेड होते हैं.
- प्रारूप - वैकल्पिक. JSONFormat enum मान. डिफ़ॉल्ट मान JSONFormat.Compact है, जो नई पंक्तियां या रिक्त स्थान नहीं जोड़ता है और बाइनरी डेटा और असमर्थित कॉलम को ब्लॉक करता है।
उदाहरण
पदानुक्रमित डेटा
एक बटन नियंत्रण सम्मिलित करें, और उसके OnSelect गुण को इस सूत्र पर सेट करें.
ClearCollect( CityPopulations, { City: "London", Country: "United Kingdom", Population: 8615000 }, { City: "Berlin", Country: "Germany", Population: 3562000 }, { City: "Madrid", Country: "Spain", Population: 3165000 }, { City: "Hamburg", Country: "Germany", Population: 1760000 }, { City: "Barcelona", Country: "Spain", Population: 1602000 }, { City: "Munich", Country: "Germany", Population: 1494000 } ); ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
Alt कुंजी को दबाए रखते हुए बटन चुनें.
CitiesByCountry संग्रह इस डेटा संरचना के साथ बनाया गया है, जिसे आप फ़ाइल पर संग्रह मेनू चयन कर और फिर संग्रह का नाम चयन कर दिखा सकते हैं.
आप इस संग्रह को सेटिंग्स>आगामी फीचर>फॉर्मूला बार परिणाम दृश्य सक्षम करें का चयन करके, फॉर्मूला बार में संग्रह का नाम चुन कर और फिर फॉर्मूला बार के तहत संग्रह के नाम के बगल में डाउन एरो का चयन कर के भी दिखा सकते हैं.
अन्य बटन सम्मिलित करें, और उसके OnSelect गुण को इस सूत्र पर सेट करें:
Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
यह सूत्र ग्लोबल चर CitiesByCountryJSON को CitiesByCountry के लिए JSON प्रतिनिधित्व पर सेट करता है.
Alt कुंजी को दबाए रखते हुए बटन चुनें.
एक लेबल नियंत्रण जोड़ें, और इसके पाठ गुण को इस चर पर सेट करें.
CitiesByCountryJSON
लेबल यह परिणाम, सभी एक पंक्ति पर, बिना कोई रिक्त स्थान के दिखाता है, जो समूचे नेटवर्क में प्रसार के लिए उपयुक्त है:
[ { "Cities": [{ "City": "London", "Population": 8615000 }], "Country": "United Kingdom" }, { "Cities": [ { "City": "Berlin", "Population": 3562000 }, { "City": "Hamburg", "Population": 1760000 }, { "City": "Munich", "Population": 1494000 } ], "Country": "Germany" }, { "Cities": [ { "City": "Madrid", "Population": 3165000 }, { "City": "Barcelona", "Population": 1602000 } ], "Country": "Spain" } ]
आउटपुट को अधिक पठनीय बनाने के लिए द्वितीय बटन का सूत्र परिवर्तित करें.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
Alt कुंजी को दबाए रखते हुए द्वितीय बटन का चयन करें.
लेबल अधिक पठनीय परिणाम दिखाता है.
[ { "Cities": [ { "City": "London", "Population": 8615000 } ], "Country": "United Kingdom" }, { "Cities": [ { "City": "Berlin", "Population": 3562000 }, { "City": "Hamburg", "Population": 1760000 }, { "City": "Munich", "Population": 1494000 } ], "Country": "Germany" }, { "Cities": [ { "City": "Madrid", "Population": 3165000 }, { "City": "Barcelona", "Population": 1602000 } ], "Country": "Spain" } ]
base64 में छवियाँ और मीडिया
एक छवि नियंत्रण जोड़ें.
यह नियंत्रण इसके साथ SampleImage लाता है.
एक बटन नियंत्रण जोड़ें और उसके OnSelect गुण को इस सूत्र पर सेट करें.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Alt कुंजी को दबाए रखते हुए बटन चुनें.
एक लेबल जोड़ें, और इसके पाठ गुण को इस चर पर सेट करें.
ImageJSON
नियंत्रण का आकार बदलें और फ़ॉन्ट का आकार आवश्यकतानुसार कम करें, ताकि अधिकांश परिणाम दिखाई दे सके.
लेबल पाठ स्ट्रिंग दिखाता है जिसे JSON फ़ंक्शन ने कैप्चर किया था.
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
मूल्य तालिकाएं
यह सूत्र:
JSON( [1,2,3] )
पाठ स्ट्रिंग [{"मान":1},{"मान":2},{"मान":3}] उत्पन्न करता है।
JSONFormat.FlattenValueTables विकल्प के साथ समान सूत्र:
JSON( [1,2,3], JSONFormat.FlattenValueTables )
पाठ स्ट्रिंग [1,2,3] उत्पन्न करता है.
ध्यान दें कि CityPopulations या CitiesByCountry संग्रहों के साथ JSON का उपयोग करते समय FlattenValueTables विकल्प का कोई प्रभाव नहीं पड़ता है क्योंकि ये तालिकाएँ Value तालिकाएँ नहीं हैं। मान तालिका में एक एकल स्तंभ होता है और इसका नाम "मान" होना चाहिए।