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


ParseJSON функция

Отнася се за: Canvas apps Model-driven apps Power Pages Power Platform CLI

Интерпретира JSON низ и връща нетипизиран обект.

Описание

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

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

Синтаксис

ParseJSON( JSONString )

  • JSONString – Задължително. Структурата на JSON, представена като текст.

Конвертиране на нетипизиран тип данни на обект

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( Стойност( uo.r), Стойност(uo.g), Стойност(uo.b), Стойност(uo.a) ))
Валута, число { "numbervalue": 123.5 } Числата се представят директно в JSON с точка ( . ) като десетичен разделител. Стойност( 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"": ""May 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: Стойност(ThisRecord.Value.id), име: Текст(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 )