Share via


ParseJSON функциясы

Қолданылады: Canvas қолданбалары Үлгіге негізделген қолданбалар Power Platform CLI

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

Сипаттама

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

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

Синтаксис

ParseJSON( JSONString )

  • JSONString – Міндетті. JSON құрылымы мәтін ретінде ұсынылған.

Жіктелмеген нысан деректер түрін түрлендіру

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

Деректер түрі JSON мысалдары Сипаттама Түрлендіру мысалы
Boolean { "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("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 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 нысанынан жазба құрылымына тікелей түрлендіру жоқ, бірақ жеке өрістерді жазбаны қалыптастыру үшін жіктелмеген нысаннан шығарып алуға болады. { өріс: 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"": ""this is text"" }").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 )