ParseJSON फलन

इस पर लागू होता है: कैनवास ऐप्लिकेशन Copilot Studio मॉडल-चालित ऐप्स, Power Platform, CLI Dataverse फ़ंक्शंस , Power Pages

JSON स्ट्रिंग की व्याख्या करता है और यदि कोई प्रकार प्रदान किया जाता है, तो डायनेमिक मान या एक विशिष्ट टाइप किया गया मान लौटाता है।

Description

ParseJSON फ़ंक्शन एक मान्य JSON स्ट्रिंग को पार्स करता है और JSON संरचना का प्रतिनिधित्व करने वाला एक गतिशील मान लौटाता है।

वैकल्पिक रूप से, JSON को टाइप किए गए ऑब्जेक्ट में परिवर्तित करने के लिए दूसरे तर्क का उपयोग करें जिसे सीधे सूत्रों में उपयोग किया जा सकता है। Power Fx इससे परिणाम को प्राप्त करना आसान हो जाता है, क्योंकि उपयोग के स्थान पर रूपांतरण और दबाव की आवश्यकता नहीं रह जाती। अप्रकारित JSON को इन नियमों के साथ प्रकार से मैप किया जाता है:

  • इस प्रकार के जो कॉलम JSON में मौजूद नहीं हैं, उन्हें रिक्त से भर दिया जाता है।
  • JSON में जो कॉलम प्रकार में मौजूद नहीं हैं उन्हें अनदेखा कर दिया जाता है।
  • जो कॉलम प्रकार और JSON दोनों में हैं, JSON मान प्रकार के लिए बाध्यकारी होना चाहिए।

ParseJSON यदि पाठ ECMA-404 और IETF RFC 8259 में वर्णित जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) प्रारूप के अनुसार मान्य JSON नहीं है, तो फ़ंक्शन त्रुटियाँ वापस कर सकता है।

Syntax

ParseJSON( JSONString [ , प्रकार ] )

  • JSONString – आवश्यक. JSON संरचना पाठ के रूप में प्रस्तुत की गई.
  • प्रकार - वैकल्पिक. JSON संरचना के लिए Power Fx प्रकार परिभाषा. इस तर्क के बिना, ParseJSON एक गतिशील मान लौटाता है; इसके साथ फ़ंक्शन एक विशिष्ट टाइप किया गया मान लौटाता है।

गतिशील मूल्यों को परिवर्तित करना

दूसरे तर्क के बिना, ParseJSON एक डायनेमिक मान देता है जिसके लिए समर्थित डेटा प्रकारों में फ़ील्ड मानों के स्पष्ट रूपांतरण की आवश्यकता होती है. निम्न तालिका Power Apps में डेटा प्रकार और संबंधित JSON डेटा प्रकार और इसे कैसे परिवर्तित करना है, इसे सूचीबद्ध हैं.

Data type JSON examples Description Example conversion
बूलियन { "bool": true } बूलियन JSON में एक स्पष्ट प्रकार है और इसे सीधे रूपांतरित किया जा सकता है. बूलियन ( ParseJSON("{ ""बूल": सच }").बूल)
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON में कोई रंग प्रकार नहीं है. रंग मान RGBA पूर्णांकों या हेक्साडेसिमल स्ट्रिंग्स से बनाए जा सकते हैं. ColorValue ( ParseJSON( "{ "color": "# 102030"" }" ).color )
साथ ( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b": 0, ""a": 0.5 }" ) }, RGBA( मान ( uo.r ), मान ( uo.g ), मान ( uo.b ), मान ( uo.a ) ) )
Currency, Number { "numbervalue": 123.5 } दशमलव विभाजक के रूप में एक अवधि ( . ) के साथ JSON में संख्याओं को सीधे दर्शाया जाता है. मान ( ParseJSON("{ ""numbervalue": 123.5 }").numbervalue )
दिनांक, तिथिसम, समय { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON में कोई दिनांक या समय प्रकार नहीं है, इसलिए वह केवल दिनांक और समय को स्ट्रिंग के रूप में प्रदर्शित कर सकता है. एक डायनेमिक मान को सीधे ISO 8601 स्वरूप में एक स्ट्रिंग से दिनांक, समय या दिनांक समय में कनवर्ट किया जा सकता है। अन्य प्रारूपों के लिए, पहले Text() फ़ंक्शन का उपयोग करके JSON फ़ील्ड को पाठ में बदलें और फिर DateValue(), TimeValue() या DateTimeValue() फ़ंक्शन का उपयोग करें जो डिफ़ॉल्ट रूप से वर्तमान उपयोगकर्ता की सेटिंग्स की भाषा का उपयोग करेगा. DateValue( ParseJSON("{ """appointment "": ""2022-05-10"" }").appointment )
DateValue( पाठ ( ParseJSON("{ """नियुक्ति": ""5 मई, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON में GUIds के लिए डेटा प्रकार नहीं है, इसलिए उन्हें केवल स्ट्रिंग्स के रूप में प्रदर्शित किया जा सकता है. GUID( ParseJSON("{ ""id": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, छवि, मीडिया { "URI": "https://northwindtraders.com/logo.jpg" } ये डेटा प्रकार टेक्स्ट डेटा प्रकार हैं, और इन्हें टेक्स्ट में परिवर्तित किया जा सकता है और फिर Power Apps में उपयोग किया जा सकता है. पाठ ( ParseJSON("{ """URI": "";https://northwindtraders.com/logo.jpg"" }")। यूआरआई )
Choice { "status": 1 }
{ "status": "Closed" }
विकल्पों को एक संख्या द्वारा समर्थित स्थानीय स्ट्रिंग्स के रूप में प्रस्तुत किया जाता है. JSON() फ़ंक्शन इसकी बैकिंग संख्या के लिए एक विकल्प को क्रमबद्ध करता है. किसी विकल्प में संख्या या स्ट्रिंग से कोई सीधा रूपांतरण नहीं है, लेकिन Switch() या If() फ़ंक्शन पाठ या संख्या मान पर उपयोग किया जा सकता है. स्विच (मान ( ParseJSON( "{ ""स्थिति": 1 }" ).स्थिति), 0, स्थिति.खुला, 1, स्थिति.बंद)
Record { "field": "value" } JSON ऑब्जेक्ट से रिकॉर्ड संरचना में कोई सीधा रूपांतरण नहीं होता है, लेकिन रिकॉर्ड बनाने के लिए अलग-अलग फ़ील्ड को डायनामिक मान से पुनर्प्राप्त किया जा सकता है. { फ़ील्ड: टेक्स्ट ( ParseJSON( "{ "फ़ील्ड": ""मान"" }" ).फ़ील्ड) }
Record Reference n/a रिकॉर्ड संदर्भ डेटा स्रोतों के लिए अद्वितीय हैं और उन्हें क्रमबद्ध या अक्रमबद्ध नहीं किया जा सकता है. फ़ील्ड मान जो अद्वितीय कुंजियों का प्रतिनिधित्व करते हैं, उनका उपयोग JSON में रिकॉर्ड की पहचान करने के लिए किया जा सकता है जिसे तब देखा जा सकता है. n/a
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON में सरणियाँ हो सकती हैं, जिन्हें तालिकाओं में परिवर्तित किया जा सकता है. ये मान रिकॉर्ड्स की सरणियाँ, या मानों की सरणियाँ हो सकते हैं जो प्रभावी रूप से सिंगल कॉलम टेबल हैं. ParseJSON() सरणियों को केवल डायनेमिक मानों की एकल कॉलम तालिका में परिवर्तित किया जा सकता है, और इसका उपयोग इस तरह किया जा सकता है या ForAll() का उपयोग करके रिकॉर्ड की टाइप की गई तालिकाओं में परिवर्तित किया जा सकता है। ForAll( तालिका ( ParseJSON( "[ { { ""id"": 1, ""name"": "one"" }, { ""id"": 2, "name": ""two"" } ]" ), { id: Value (ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Text { "stringField": "this is text" } पाठ JSON में एक स्पष्ट प्रकार है और इसे सीधे रूपांतरित किया जा सकता है. पाठ( ParseJSON( "{ """stringField"": ""यह पाठ है"" }").stringField)
Two options { "available": true }
{ "available": "Yes" }
बूलियन द्वारा समर्थित स्थानीय स्ट्रिंग्स के रूप में दो विकल्प प्रस्तुत किए गए हैं. JSON() फ़ंक्शन इसके बूलियन मान के लिए दो विकल्पों को क्रमबद्ध करता है. बूलियन, संख्या या स्ट्रिंग से दो विकल्पों में कोई सीधा रूपांतरण नहीं है, लेकिन पाठ, संख्या या बूलियन मान पर Switch() या If() फ़ंक्शन का उपयोग किया जा सकता है. स्विच (बूलियन ( ParseJSON( "{ """उपलब्ध": सही }" ).उपलब्ध), झूठा, Availability.No, सच, उपलब्धता.हाँ)

Examples

फ़ील्ड मानों को एक्सेस करना

निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "parent": { "child": "text value" }, "number": 567 }
  1. निम्न सूत्र पाठ text value देता है:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. निम्न सूत्र संख्या 567 देता है:
    Value( ParseJSON( JsonString ).number )
    

यदि फ़ील्ड नाम में अमान्य पहचानकर्ता नाम है, तो आप फ़ील्ड नामों को सिंगल कोट्स में रख सकते हैं. निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "0": { "child-field": "text value" } }
  1. निम्न सूत्र पाठ text value देता है:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Blanks

निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "text": "text value" , "number": 567, "empty": null }
  1. गैर-मौजूद फ़ील्ड तक पहुँचने के प्रयास में Blank() मिलता है. निम्न सूत्र true लौटाता है:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null मानों को Blank() माना जाता है. निम्न सूत्र true लौटाता है:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Simple Arrays

निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "array": [1, 2, 3] }
  1. डायनेमिक मानों की सरणी फ़ील्ड की एकल-स्तंभ तालिका में दूसरी संख्या तक पहुँचना और Value() का उपयोग करके किसी संख्या में कनवर्ट करना रिटर्न देता है2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. सरणी फ़ील्ड में गतिशील मानों की एकल-स्तंभ तालिका को संख्याओं { Value: 1 }, { Value: 2 }, { Value: 3 }की एकल स्तंभ तालिका में परिवर्तित करना:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

रिकॉर्ड की सरणियाँ

निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. ForAll() के साथ सीधे रिकॉर्ड की टाइप की गई तालिका में कनवर्ट करना ThisRecord.[fieldname] फ़ील्ड तक पहुँचने और उन्हें विशिष्ट प्रकारों में कनवर्ट करने के लिए उपयोग करके किया जा सकता है:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

सरणी से तालिका

  1. Table() फ़ंक्शन का उपयोग करके डायनेमिक मानों को किसी तालिका में कनवर्ट करने से डायनेमिक मानों की एकल-स्तंभ तालिका प्राप्त होती है. तब वस्तु को Value (एकल) कॉलम का उपयोग करके एक्सेस किया जाना चाहिए और जैसा कि पहले बताया गया है, प्रकारों में परिवर्तित किया जाना चाहिए.

निम्नलिखित JSON स्ट्रिंग को JsonString नाम के एक वेरिएबल में दिया गया है

{ "array": [1, 2, 3] }

Table() सरणी में संख्या के लिए एकल-स्तंभ मान के साथ डायनेमिक मानों की एकल-स्तंभ तालिका देता है...

 Set(untypedTable, Table( ParseJSON( JsonString ).array ));
 
 Value( Index(untypedTable, 1).Value.Value )
 ```

Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
 { "id": 1, "name": "One"},
 { "id": 2, "name": "Two"}
 ] }

Table()डायनेमिक मानों की एक एकल-स्तंभ तालिका लौटाता है जो सरणी में प्रत्येक json ऑब्जेक्ट का प्रतिनिधित्व करता है।

  Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
  
  Text( Index(untypedTable, 1).Value.name )