ParseJSON फ़ंक्शन

इन पर लागू होता है: कैनवास ऐप्स मॉडल-संचालित ऐप्स Power Platform CLI

JSON स्ट्रिंग की व्याख्या करता है और अनटाइप्ड ऑब्जेक्ट लौटाता है.

विवरण

ParseJSON फ़ंक्शन एक मान्य JSON स्ट्रिंग को पार्स करेगा और JSON संरचना पेश करते हुए अनटाइप्ड ऑब्जेक्ट वापस करेगा.

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

सिंटैक्स

ParseJSON( JSONString )

  • JSONString – आवश्यक. JSON संरचना पाठ के रूप में प्रस्तुत की गई.

अनटाइप्ड ऑब्जेक्ट डेटा प्रकार को रूपांतरित करना

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

डेटा प्रकार JSON के उदाहरण विवरण उदाहरण रूपांतरण
Boolean { "bool": true } बूलियन JSON में एक स्पष्ट प्रकार है और इसे सीधे रूपांतरित किया जा सकता है. बूलियन( ParseJSON("{ ""bool"": true }").bool )
रंग { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON में कोई रंग प्रकार नहीं है. रंग मान RGBA पूर्णांकों या हेक्साडेसिमल स्ट्रिंग्स से बनाए जा सकते हैं. ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color )
With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) )
मुद्रा, संख्या { "numbervalue": 123.5 } दशमलव विभाजक के रूप में एक अवधि ( . ) के साथ JSON में संख्याओं को सीधे दर्शाया जाता है. Value( 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( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
मार्गदर्शक { "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 में उपयोग किया जा सकता है. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
विकल्प { "status": 1 }
{ "status": "Closed" }
विकल्पों को एक संख्या द्वारा समर्थित स्थानीय स्ट्रिंग्स के रूप में प्रस्तुत किया जाता है. JSON() फ़ंक्शन इसकी बैकिंग संख्या के लिए एक विकल्प को क्रमबद्ध करता है. किसी विकल्प में संख्या या स्ट्रिंग से कोई सीधा रूपांतरण नहीं है, लेकिन Switch() या If() फ़ंक्शन पाठ या संख्या मान पर उपयोग किया जा सकता है. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
रिकॉर्ड { "field": "value" } JSON ऑब्जेक्ट से रिकॉर्ड संरचना में कोई सीधा रूपांतरण नहीं होता है, लेकिन रिकॉर्ड बनाने के लिए अनटाइप्ड ऑब्जेक्ट से अलग-अलग फ़ील्ड पुनर्प्राप्त की जा सकती हैं. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
रिकॉर्ड संदर्भ लागू नहीं रिकॉर्ड संदर्भ डेटा स्रोतों के लिए अद्वितीय हैं और उन्हें क्रमबद्ध या अक्रमबद्ध नहीं किया जा सकता है. फ़ील्ड मान जो अद्वितीय कुंजियों का प्रतिनिधित्व करते हैं, उनका उपयोग JSON में रिकॉर्ड की पहचान करने के लिए किया जा सकता है जिसे तब देखा जा सकता है. लागू नहीं
टेबल [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON में सरणियाँ हो सकती हैं, जिन्हें तालिकाओं में परिवर्तित किया जा सकता है. ये मान रिकॉर्ड्स की सरणियाँ, या मानों की सरणियाँ हो सकते हैं जो प्रभावी रूप से सिंगल कॉलम टेबल हैं. ParseJSON() सरणियों को केवल अनटाइप्ड ऑब्जेक्ट्स की एकल कॉलम तालिका में बदला जा सकता है, और इस तरह उपयोग किया जा सकता है या ForAll() का उपयोग करके रिकॉर्ड की टाइप की गई तालिकाओं में परिवर्तित किया जा सकता है. ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
टेक्स्ट { "stringField": "this is text" } पाठ JSON में एक स्पष्ट प्रकार है और इसे सीधे रूपांतरित किया जा सकता है. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
दो विकल्प { "available": true }
{ "available": "Yes" }
बूलियन द्वारा समर्थित स्थानीय स्ट्रिंग्स के रूप में दो विकल्प प्रस्तुत किए गए हैं. JSON() फ़ंक्शन इसके बूलियन मान के लिए दो विकल्पों को क्रमबद्ध करता है. बूलियन, संख्या या स्ट्रिंग से दो विकल्पों में कोई सीधा रूपांतरण नहीं है, लेकिन पाठ, संख्या या बूलियन मान पर Switch() या If() फ़ंक्शन का उपयोग किया जा सकता है. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

उदाहरण

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

निम्नलिखित 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' )
    

रिक्त

निम्नलिखित 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 ) )
    

सरल सरणियाँ

निम्नलिखित 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 )