ПарсеЈСОН функција
Односи се на: Апликације платна ЦЛИ апликације Power Pages Power Platform засноване на моделу
Тумачи JSON ниску и враћа нетипизиран објекат.
Опис
Функција ParseJSON ће рашчланити важећу JSON ниску и вратити нетипизирани објекат који представља JSON структуру.
Функција ПарсеЈСОН може да врати грешке ако текст није важећи ЈСОН према ЈаваСцрипт Објецт Нотатион (ЈСОН) формату описаном у ЕЦМА-404 и ИЕТФ РФЦ 8259.
Синтакса
ПарсеЈСОН ( ЈСОНСтринг )
- ЈСОНСтринг – Обавезно. JSON структура представљена као текст.
Конвертовање типа података нетипизираног објекта
ParseJSON враћа нетипизиран објекат који захтева експлицитно конвертовање вредности поља у подржаним типовима података. Следећа табела наводи типове података и Power Apps и одговарајући JSON тип података и начин њиховог конвертовања.
Тип података | Примери JSON | Опис | Пример конверзије |
---|---|---|---|
Логичка вредност | { "bool": true } |
Логички тип је експлицитни тип у JSON спецификацији и може се директно конвертовати. | Боолеан ( ПарсеЈСОН(" { ""боол"": труе }").боол ) |
Боја | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Не постоји тип боје у JSON спецификацији. Вредности боја се могу креирати из RGBA целих бројева или хексадецималних ниски. | ЦолорВалуе ( ПарсеЈСОН( " { """цолор"": ""#102030""" }" ).цолор ) Wитх ( { уо : ПарсеЈСОН( " { """р"": 255, ""г"": 128, ""б"": 0, ""а"": 0.5 }" ) }, РГБА ( Валуе( уо.р ), Валуе( уо.г ), Валуе( уо.б ), Валуе( уо.а ) ) ) |
Валута, број | { "numbervalue": 123.5 } |
Бројеви се у JSON спецификацији представљају директно са тачком ( . ) као знаком за раздвајање децимала. | Валуе ( ПарсеЈСОН(" { ""нумбервалуе"": 123.5 }").нумбервалуе ) |
Датум, датум-време, време | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON нема тип датума или времена, тако да датум и време може да представља само као ниске. Нетипизиран објекат се може директно конвертовати из ниске у формату ISO 8601 у датум, време или датум и време. За друге формате, прво конвертујте JSON поље у текст помоћу функције Text(), а затим користите функцију DateValue(), TimeValue() или DateTimeValue() која ће подразумевано користити језик поставки тренутног корисника. | ДатеВалуе ( ПарсеЈСОН(" { ""именовање"": ""#пии_ииииииијјз""" }).аппоинтмент ) ДатеВалуе ( Теxт( ПарсеЈСОН(" { ""именовање"": ""5. мај 2022"" }").именовање ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON нема тип података за GUID вредности, тако да оне могу бити представљене само као ниске. | ГУИД ( ПарсеЈСОН(" { ""ид"": "" 123e4567-e89b-12d3-a456-426655440000"" }").ид ) |
Хипервеза, слика, медији | { "URI": "https://northwindtraders.com/logo.jpg" } |
Ови типови података су текстуални типови података и могу се конвертовати у текст, а затим користити у услузи Power Apps. | Теxт ( ПарсеЈСОН(" { ""УРИ"": ""; https://northwindtraders.com/logo.jpg"" }"). УРИ ) |
Избор | { "status": 1 } { "status": "Closed" } |
Избори су представљени као локализоване ниске праћене бројем. Функција JSON() серијализује избор пратећим бројем. Нема директне конверзије из броја или ниске у избор, али функције Switch() или If() могу да се користе на тексту или нумеричкој вредности. | Свитцх ( Валуе( ПарсеЈСОН( " { ""статус"": 1 }" ).статус ), 0, статус.Опен, 1, Статус.Цлосед ) |
Запис | { "field": "value" } |
Не постоји директна конверзија из JSON објекта у структуру записа, али се појединачна поља могу преузети из нетипизираног објекта да би се формирао запис. | { фиелд : Теxт( ПарсеЈСОН( " { ""фиелд"": ""валуе"" }" ).фиелд ) } |
Референца записа | Није примењиво | Референце записа су јединствене за изворе података и не могу бити серијализоване или несеријализоване. Вредности поља које представљају јединствене кључеве могу се користити у JSON-у да би се идентификовали записи који се затим могу потражити. | Није примењиво |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON може да садржи низове који се могу конвертовати у табеле. Ове вредности могу бити низови записа или низови вредности које су ефективно табеле са једном колоном. ПарсеЈСОН () низови могу бити конвертовани само у једну табелу колона неоткуцаних објеката , и могу се користити као такви или конвертовати у откуцане табеле записа користећи ФорАлл() . | ФорАлл ( Табле( ПарсеЈСОН( "[ { ""ид"": 1,""наме"": ""оне"" },""ид { "": 2, ""наме"": ""тwо""] } " ) ), { ид: валуе(#пии_ијфидејз), наме: теxт(#пии_ијфидеаз) } ) |
Текст | { "stringField": "this is text" } |
Текст је експлицитни тип у JSON спецификацији и може се директно конвертовати. | Теxт ( ПарсеЈСОН( " { """стрингФиелд"": ""ово је текст"" }").стрингФиелд ) |
Две опције | { "available": true } { "available": "Yes" } |
Две опције се представљају као локализоване ниске праћене логичком вредношћу. Функција JSON() серијализује две опције према логичким вредностима. Нема директне конверзије из логичке вредности, броја или ниске у две опције, али функције Switch() или If() могу да се користе на текстуалној, нумеричкој или логичкој вредности. | Свитцх ( Боолеан( ПарсеЈСОН( " { """"аваилабле"": труе }" ).аваилабле ), фалсе, #пии_ијфидебз, труе, Аваилабилитy.Yес ) |
Примери
Приступ вредностима поља
У следећој JSON ниски у променљивој под називом JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Следећа формула враћа текст
text value
:Text( ParseJSON( JsonString ).parent.child )
- Следећа формула враћа број
567
:Value( ParseJSON( JsonString ).number )
У случају да се назив поља састоји од неважећег назива идентификатора, називе поља можете ставити у једноструке наводнике.
У следећој JSON ниски у променљивој под називом JsonString
{ "0": { "child-field": "text value" } }
- Следећа формула враћа текст
text value
:Text( ParseJSON( JsonString ).'0'.'child-field' )
Празне вредности
У следећој JSON ниски у променљивој под називом JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Покушај приступа непостојећим пољима враћа Blank(). Следећа формула враћа
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- За JSON
null
вредности се сматра да су Blank(). Следећа формула враћаtrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Једноставни низови
У следећој JSON ниски у променљивој под називом JsonString
{ "array": [1, 2, 3] }
- Приступање другом броју у табели са једном колоном поља низа нетипизираног објекта и конвертовање у број помоћу функције Value() враћа
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Конвертовање табеле са једном колоном нетипизираног објекта у пољу низа, у табелу бројева у једној колони
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Низови записа
У следећој JSON ниски у променљивој под називом JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Конвертовање у типизирану табелу записа директно помоћу функције ForAll() може се обавити помоћу
ThisRecord.[fieldname]
за приступ пољима нетипизираног објекта и њиховог конвертовања у познате типове:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Из низа у табелу
- Конвертовање нетипизираног објекта у табелу помоћу функције Table() резултира табелом са једном колоном нетипизираних објеката. Објекту је затим потребно приступити користећи (једну) колону
Value
и конвертовати је у типове као што је претходно објашњено.
У следећој JSON ниски у променљивој под називом JsonString
{ "array": [1, 2, 3] }
Табле () враћа табелу са једном колоном неоткуцаних објеката са једном колоном Вредност за број у низу ...
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"}
] }
Табле () враћа табелу са једном колоном неоткуцаних објеката која представља сваки јсон објекат у низу.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )