Бөлісу құралы:


ParseJSON Функция

Келесілерге қолданылады: Canvas бағдарламалары Copilot Studio Модельге негізделген бағдарламалар Power Platform CLI Dataverse функциялары Power Pages

JSON жолын түсіндіреді және түрі берілген жағдайда динамикалық мәнді немесе белгілі бір терілген мәнді қайтарады.

Маңызды

Сипаттама

ParseJSON Функция жарамды JSON жолын талдайды, JSON құрылымын білдіретін динамикалық мәнді қайтарады.

Қосымша түрде, JSON файлын Power Fx формулаларында тікелей қолдануға болатын терілген нысанға түрлендіру үшін екінші аргументті пайдаланыңыз. Бұл нәтижені тұтынуды жеңілдетеді, өйткені пайдалану орнында түрлендірулер мен мәжбүрлеулер енді қажет емес. Түрленбеген JSON келесі ережелермен түрге салыстырылады:

  • JSON файлында жоқ түрдегі бағандар бос толтырылады.
  • JSON ішіндегі түрде жоқ бағандар еленбейді.
  • Түрде де, JSON де бар бағандар, JSON мәні түрге мәжбүрлі болуы керек.

ParseJSON Функция ECMA-404 және IETF RFC 8259-да сипатталған JavaScript Object Notation (JSON) пішіміне сәйкес JSON жарамды болмаса, қателерді қайтаруы мүмкін.

Синтаксис

ParseJSON( JSONString [ , Түрі ] )

  • JSONString – Міндетті. JSON құрылымы мәтін ретінде ұсынылған.
  • Түр - Қосымша. JSON құрылымына арналған Power Fx түр анықтамасы. Бұл аргументсіз ParseJSON динамикалық мәнді қайтарады; онымен бірге функция белгілі бір терілген мәнді қайтарады.

Динамикалық мәндерді түрлендіру

Екінші аргументсіз ParseJSON қолдау көрсетілетін деректер түрлеріндегі өріс мәндерін айқын түрлендіруді талап ететін динамикалық мәнді қайтарады. Төмендегі кестеде Power Apps бағдарламасындағы деректер түрлері және сәйкес JSON деректер түрі және оны түрлендіру жолы берілген.

Деректер түрі JSON мысалдары Сипаттама Түрлендіру мысалы
Логикалық { "bool": true } Логикалық JSON ішіндегі айқын түрі және оны тікелей түрлендіруге болады. Boolean( 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 пішіміндегі жолдан күнге, уақытқа немесе күн-күнге тікелей түрлендіруге болады. Басқа пішімдер үшін алдымен JSON өрісін Text() функциясын пайдаланып мәтінге түрлендіріңіз, содан кейін әдепкі бойынша ағымдағы пайдаланушы параметрлерінің тілін пайдаланатын DateValue(), TimeValue() or DateTimeValue() функциясын пайдаланыңыз. DateValue( ParseJSON("{ ""тағайындау"": "2022-05-10"" }").тағайындау )
DateValue( Text( ParseJSON("{ ""appointment"": "5 мамыр 2022"" }").appointment )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON пішімінде GUID идентификаторлары үшін деректер түрі жоқ, сондықтан оларды тек жолдар ретінде көрсетуге болады. 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 ішінде пайдалануға болады. қолданылмайды
Table [ { "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"": ""бұл мәтін"" }").stringField )
Екі опция { "available": true }
{ "available": "Yes" }
Екі опция логикалық мәнмен бекітілген локализацияланған жолдар ретінде ұсынылады. JSON() функциясы екі опцияны логикалық мәнге сериялайды. Логикалық мәннен немесе жолдан екі таңдауға тікелей түрлендіру жоқ, бірақ Switch() немесе If() функцияларын мәтінде, санда немесе логикалық мәнде пайдалануға болады. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Мысалдар

Өріс мәндеріне қатынасу

JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "parent": { "child": "text value" }, "number": 567 }
  1. Келесі формула text value мәтінін қайтарады:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Келесі формула 567 санын қайтарады:
    Value( ParseJSON( JsonString ).number )
    

Өріс атауы жарамсыз идентификатор атауынан тұратын жағдайда, өріс атауларын жалғыз тырнақшаға қоюға болады. JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "0": { "child-field": "text value" } }
  1. Келесі формула text value мәтінін қайтарады:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Бос орындар

JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "text": "text value" , "number": 567, "empty": null }
  1. Жоқ өрістерге қатынасу әрекеті Бос() мәнін қайтарады. Келесі формула true қайтарады:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null мәндері Бос() деп саналады. Келесі формула true қайтарады:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Қарапайым массивтер

JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "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 ) )
    

Жазбалар массивтері

JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "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 (бір) баған арқылы қатынасу және бұрын түсіндірілгендей түрлерге түрлендіру қажет.

JsonString деп аталатын айнымалыдағы келесі JSON жолын ескере отырып

{ "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 )