Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Отнася се за: Приложения
за платно Copilot Studio
Моделиращи приложения
Power Platform CLI
Dataverse функции
Power Pages
Интерпретира JSON низ и връща динамична стойност или конкретна въведена стойност, ако е предоставен тип.
Важно
- Използването на втория аргумент за ParseJSON преобразуване в въведен обект е експериментална функция.
- Екперименталните функции не са предназначени за производствена употреба и може да са с ограничена функционалност. Тези функции са налични преди официалната версия, така че да можете да получите ранен достъп и да предоставите обратна връзка. Повече информация: Разбиране на експериментални, предварителни и оттеглени функции в приложенията за платно
- Поведението, описано в тази статия, е налице само когато експерименталната функция Дефинирани от потребителя типове в Настройки > Предстоящи функции > Експериментална е включена (тя е изключена по подразбиране).
- Вашата обратна връзка е много ценна за нас. Моля, кажете ни какво мислите във форума Power Apps на общността заекспериментални функции.
Описание
Функцията 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 }
- Следната формула връща текста
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] }
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 )