Делите путем


ParseJSON Функцију

Односи се на: Цанвас апликације Цопилот Студио Апликације вођене моделом Повер Платформ ЦЛИ Датаверсе функције Повер Пагес

Тумачи ЈСОН стринг и враћа динамичку вредност или одређену откуцану вредност ако је тип обезбеђен.

Важно

  • Коришћење другог аргумента за ParseJSON претварање у откуцани објекат је експериментална карактеристика.
  • Експерименталне функције нису намењене за коришћење у производњи и могу да имају ограничене функционалности. Ове функције су доступне пре званичног издања, тако да можете добити рани приступ и пружити повратне информације. Још информација: Објашњење експерименталних, прелиминарних и повучених функција апликацијама са подлогом
  • Понашање које овај чланак описује је доступно само када је укључена експериментална функција Кориснички дефинисани типови у Подешавањима > Предстојеће функције > Експериментално (подразумевано је искључена).
  • Ваше повратне информације су нам веома драгоцене. Молимо Вас да нам кажете шта мислите на форуму Power Apps заједнице експерименталних функција.

Опис

Функција ParseJSON анализира важећи ЈСОН стринг и враћа динамичку вредност која представља ЈСОН структуру.

Опционо, користите други аргумент да бисте претворили ЈСОН у откуцани објекат који се може директно користити у Power Fx формулама. То чини резултат лакшим за конзумирање јер конверзије и присиле на месту употребе више нису потребне. Неоткуцани ЈСОН је мапиран на тип са овим правилима:

  • Колоне у типу које нису присутне у ЈСОН-у су попуњене празним .
  • Колоне у ЈСОН-у које нису присутне у типу се игноришу.
  • Колоне које су и у типу и у ЈСОН-у, ЈСОН вредност мора бити принудна за тип.

Функција ParseJSON може да врати грешке ако текст није важећи ЈСОН у складу са ЈаваСцрипт Објецт Нотатион (ЈСОН) форматом описаним у ЕЦМА-404 и ИЕТФ РФЦ 8259 .

Синтакса

ParseJSON( ЈСОНСтринг [ , Тип ] )

  • ЈСОНСтринг – Обавезно. JSON структура представљена као текст.
  • Тип - Опционо. Дефиниција Power Fx типа за ЈСОН структуру. Без овог аргумента, ParseJSON враћа динамичку вредност; са њом функција враћа одређену откуцану вредност.

Претварање динамичких вредности

Без другог аргумента, ParseJSON враћа динамичку вредност која захтева експлицитну конверзију вредности поља у подржаним типовима података. Следећа табела наводи типове података и Power Apps и одговарајући JSON тип података и начин њиховог конвертовања.

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

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Из низа у табелу

  1. Претварање динамичких вредности у табелу помоћу функције Табле () резултира табелом динамичких вредности са једном колоном. Објекту је затим потребно приступити користећи (једну) колону 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 )