Делите путем


ПарсеЈСОН функција

Односи се на: Апликације платна ЦЛИ апликације 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 }
  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] }

Табле () враћа табелу са једном колоном неоткуцаних објеката са једном колоном Вредност за број у низу ...

 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 )