Функция ParseJSON
Отнася се за: Приложения
за платно Управлявани от модел
Power Pages
Power Platform приложения CLI
Интерпретира JSON низ и връща нетипизиран обект или типизиран обект.
Важно
- Използването на втория аргумент на ParseJSON за преобразуване в типизиран обект е експериментална функция.
- Екперименталните функции не са предназначени за производствена употреба и може да са с ограничена функционалност. Тези функции са налични преди официалната версия, така че да можете да получите ранен достъп и да предоставите обратна връзка. Повече информация: Разбиране на експериментални, предварителни и оттеглени функции в приложенията за платно
- Поведението, описано в тази статия, е налице само когато експерименталната функция Дефинирани от потребителя типове в Настройки > Предстоящи функции > Експериментална е включена (тя е изключена по подразбиране).
- Вашата обратна връзка е много ценна за нас. Моля, кажете ни какво мислите във форума Power Apps на общността заекспериментални функции.
Функцията ParseJSON анализира валиден JSON низ и връща нетипизиран обект , представляващ JSON структурата.
По желание използвайте втория аргумент, за да конвертирате JSON в типизиран обект, който може да се използва директно във Power Fx формули. Това прави резултата по-лесен за използване, тъй като вече не са необходими преобразувания и принуда на мястото на използване. Нетипизираният JSON се съпоставя с типа със следните правила:
- Колоните от типа, които не присъстват в JSON, се попълват с празни.
- Колоните в JSON, които не присъстват в типа, се игнорират.
- Колони, които са както в типа, така и в JSON, стойността на JSON трябва да бъде принудена към типа.
Функцията ParseJSON може да върне грешки, ако текстът не е валиден JSON според формата JavaScript Object Notation (JSON), описан в ECMA-404 и IETF RFC 8259.
ParseJSON(JSONString [, Тип ] )
- JSONString – Задължително. Структурата на JSON, представена като текст.
- Тип - По избор. Дефиницията Power Fx на типа за JSON структурата. Без този аргумент ParseJSON връща нетипизиран обект; с него и функцията връща силно типизиран обект.
Без втория аргумент ParseJSON връща нетипизиран обект , който изисква изрично преобразуване на стойности на полета в поддържани типове данни. Следващата таблица изброява типовете данни в Power Apps и съответния тип данни JSON и как да ги конвертирате.
Тип на данни | JSON примери | Описание | Пример за преобразуване |
---|---|---|---|
Boolean | { "bool": true } |
Boolean е явен тип в JSON и може да бъде директно конвертиран. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
Цвят | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
В JSON няма тип цвят. Цветовите стойности могат да бъдат създадени от RGBA цели числа или шестнадесетични низове. |
ColorValue( ParseJSON( "{ ""color"": "#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("{ ""appointment"": "2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""5 май 2022 г"" }").appointment) ) |
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 обект в структура на запис, но отделни полета могат да се извличат от нетипизиран обект, за да се създаде запис. | { поле: Text( ParseJSON( "{ ""field""": "value"" }" ).field ) } |
Справка за запис | няма | Препратките към записи са уникални за източниците на данни и не могат да бъдат сериализирани или десериализирани. Стойностите на полетата, които представляват уникални ключове, могат да се използват в JSON за идентифициране на записи, които след това могат да бъдат търсени. | няма |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON може да съдържа масиви, които могат да бъдат преобразувани в таблици. Тези стойности могат да бъдат масиви от записи или масиви от стойности, които на практика представляват таблици с една колона. Масивите ParseJSON() могат да бъдат преобразувани само в таблица с една колона от нетипизирани обекти и могат да се използват като такива или да се преобразуват в типизирани таблици със записи с помощта на ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, "name"": "one" }", { "id"": 2, "name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: 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 )