Споделяне чрез


ParseJSON функция

Отнася се за: Приложения за платно Copilot Studio Моделиращи приложения Power Platform CLI Dataverse функции Power Pages

Интерпретира JSON низ и връща динамична стойност или конкретна въведена стойност, ако е предоставен тип.

Важно

Описание

Функцията ParseJSON анализира валиден JSON низ и връща динамична стойност, представляваща JSON структурата.

По желание използвайте втория аргумент, за да конвертирате JSON в типизиран обект, който може да се използва директно във Power Fx формули. Това прави резултата по-лесен за използване, тъй като вече не са необходими преобразувания и принуда на мястото на използване. Нетипизираният JSON се съпоставя с типа със следните правила:

  • Колоните от типа, които не присъстват в JSON, се попълват с празни.
  • Колоните в JSON, които не присъстват в типа, се игнорират.
  • Колони, които са както в типа, така и в JSON, стойността на JSON трябва да бъде принудена към типа.

Функцията ParseJSON може да върне грешки, ако текстът не е валиден JSON според формата за нотация на обект на JavaScript (JSON), описан в ECMA-404 и IETF RFC 8259.

Синтаксис

ParseJSON( JSONString [ , Тип ] )

  • JSONString – Задължително. Структурата на JSON, представена като текст.
  • Тип - По избор. Дефиницията Power Fx на типа за JSON структурата. Без този аргумент ParseJSON връща динамична стойност; с нея функцията връща конкретна въведена стойност.

Преобразуване на динамични стойности

Без втория аргумент връща динамична стойност, ParseJSON която изисква явно преобразуване на стойности на полета в поддържани типове данни. Следващата таблица изброява типовете данни в Power Apps и съответния тип данни JSON и как да ги конвертирате.

Тип на данни JSON примери Описание Пример за преобразуване
булев { "bool": true } Boolean е явен тип в JSON и може да бъде директно конвертиран. Boolean( ParseJSON("{ ""bool"": true }").bool )
Цвят { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
В JSON няма тип цвят. Цветовите стойности могат да бъдат създадени от RGBA цели числа или шестнадесетични низове. ColorValue( ParseJSON( "{ "цвят"": ""#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() или DateTimeValue(), която по подразбиране ще използва езика на настройките на текущия потребител. DateValue( ParseJSON("{ ""среща"": ""2022-05-10"" }"). среща )
DateValue( Text( ParseJSON("{ "среща"": ""5 май 2022 г." }").среща ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON няма тип данни за GUI, така че те могат да бъдат представени само като низове. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }"). id )
Хипервръзка, изображение и медия { "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 ) }
Справка за запис няма Препратките към записи са уникални за източниците на данни и не могат да бъдат сериализирани или десериализирани. Стойностите на полетата, които представляват уникални ключове, могат да се използват в JSON за идентифициране на записи, които след това могат да бъдат търсени. няма
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON може да съдържа масиви, които могат да бъдат преобразувани в таблици. Тези стойности могат да бъдат масиви от записи или масиви от стойности, които на практика представляват таблици с една колона. ParseJSON() масивите могат да се конвертират само в таблица с една колона с динамични стойности и могат да се използват като такива или преобразувани в въведени таблици със записи с помощта на ForAll(). ForAll( Table( ParseJSON( "[ { "id"": 1, ""име""" : ""one"" }, { ""id"": 2, ""име"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), име: 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 )

Примери

Достъп до стойностите на полетата

Даден е следният 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] }

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 )