Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Aplikacje kanwy Copilot Studio
Oparte
na modelu aplikacje
interfejsu wiersza polecenia
platformy Power Platform Funkcje
usługi PowerVerse w usłudze Power Pages
Interpretuje ciąg JSON i zwraca wartość dynamiczną lub określoną wartość typową, jeśli podano typ.
Ważne
- Użycie drugiego argumentu do ParseJSON konwersji na typowany obiekt jest funkcją eksperymentalną.
- Funkcje w wersji eksperymentalnej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu można szybciej uzyskać do nich dostęp i przekazać opinie na ich temat. Więcej informacji: Zrozumienie eksperymentalnych, podglądowych i wycofanych funkcji w aplikacjach kanwy
- Zachowanie opisane w tym artykule jest dostępne tylko wtedy, gdy funkcja eksperymentalna Typy zdefiniowane przez użytkownika w Ustawienia > Nadchodzące funkcje > Eksperymentalne jest włączona (domyślnie jest wyłączona).
- Twoja opinia jest dla nas bardzo cenna. Przekaż nam ją na forum społecznościowym dotyczącym eksperymentalnych funkcji Power Apps.
Podpis
Funkcja ParseJSON analizuje prawidłowy ciąg JSON i zwraca wartość dynamiczną reprezentującą strukturę JSON.
Opcjonalnie można użyć drugiego argumentu, aby przekonwertować JSON na typowany obiekt, który może być bezpośrednio użyty w formułach Power Fx. To sprawia, że wynik jest łatwiejszy do przyswojenia, ponieważ konwersje i wymuszenia w miejscu użycia nie są już wymagane. Kod JSON bez typu jest mapowany na typ z następującymi regułami:
- Kolumny w typie, które nie są obecne w kodzie JSON, są wypełniane pustymi polami.
- Kolumny w kodzie JSON, które nie są obecne w typie, są ignorowane.
- W kolumnach, które znajdują się zarówno w typie, jak i w formacie JSON, wartość JSON musi być możliwa do przekształcenia na typ.
Funkcja ParseJSON może zwracać błędy, jeśli tekst nie jest prawidłowy w formacie JSON zgodnie z formatem JavaScript Object Notation (JSON) opisanym w ecMA-404 i IETF RFC 8259.
Składnia
ParseJSON( JSONString [ , Type ] )
- JSONString – wymagane. Struktura JSON reprezentowana przez tekst.
- Typ - Opcjonalny. Definicja typu Power Fx dla struktury JSON. Bez tego argumentu ParseJSON zwraca wartość dynamiczną, a funkcja zwraca określoną wartość typową.
Konwertowanie wartości dynamicznych
Bez drugiego argumentu zwraca wartość dynamiczną, ParseJSON która wymaga jawnej konwersji wartości pól w obsługiwanych typach danych. W poniższej tabeli wymieniono typy danych w usłudze Power Apps i odpowiadający im typ danych JSON oraz sposób ich konwersji.
| Typ danych | Przykłady JSON | Podpis | Przykład konwersacji |
|---|---|---|---|
| logiczny | { "bool": true } |
Wartość logiczna jest jawnym typem w JSON i może być bezpośrednio przekonwertowana. | Wartość logiczna( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
W programie JSON nie ma typu kolorów. Wartości kolorów można tworzyć na podstawie liczb całkowitych i szesnastkowych ciągów. |
ColorValue( ParseJSON( "{ ""color": "#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r": 255, ""g":: 128, ""b"": 0, ""a": 0,5 }" ) } , RGBA( Value( uo.g ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) ) |
| Waluta, liczba | { "numbervalue": 123.5 } |
Liczby są reprezentowane bezpośrednio w JSON za pomocą okresu ( . ) jako separatorem dziesiętnym. | Value( ParseJSON("{ "numbervalue"": 123.5 }").numbervalue ) |
| Data, data i godzina, godzina | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON nie ma typu data lub godzina, więc może reprezentować tylko daty i godziny jako ciągi. Wartość dynamiczną można bezpośrednio przekonwertować z ciągu w formacie ISO 8601 na datę, godzinę lub datę/godzinę. W przypadku innych formatów najpierw przekonwertuj pole JSON na tekst za pomocą funkcji Text(), a następnie użyj funkcji DateValue(), TimeValue() lub DateTimeValue() funkcja, która domyślnie będzie używać języka ustawień bieżącego użytkownika. |
DateValue( ParseJSON("{ ""termin": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment": ""5 maja 2022"" }").appointment ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON nie ma typu danych dla identyfikatorów GUID, więc mogą być reprezentowane tylko jako ciągi. | GUID( ParseJSON("{ ""id": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| Hiperłącze, obraz, multimedia | { "URI": "https://northwindtraders.com/logo.jpg" } |
Te typy danych są typami danych tekstowych i mogą być konwertowane na tekst, a następnie używane w programie Power Apps. | Text( ParseJSON("{ ""URI": ""https://northwindtraders.com/logo.jpg"" }"). Identyfikator URI ) |
| Opcja wyboru | { "status": 1 }{ "status": "Closed" } |
Wybory są przedstawiane jako zlokalizowane ciągi znaków poparte liczbą. Funkcja JSON() szereguje wybór na jego numer kopii zapasowej. Nie ma bezpośredniej konwersji z liczby lub ciągu na wybór, ale funkcje Switch() lub If() mogą być użyte na tekście lub liczbie wartość. | Switch( Value( ParseJSON( "{ ""status": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Nagraj | { "field": "value" } |
Nie ma bezpośredniej konwersji z obiektu JSON na strukturę rekordów, ale poszczególne pola można pobrać z wartości dynamicznej w celu utworzenia rekordu. | { pole: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Odwołanie do rekordu | nie dotyczy | Odwołania do rekordów są unikatowe dla źródeł danych i nie można ich serializować ani cofać serializacji. Wartości pól reprezentujące unikalne klucze mogą być używane w JSON do identyfikowania rekordów, które można następnie wyszukać. | nie dotyczy |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON może zawierać tablice, które można przekonwertować na tabele. Te wartości mogą być tablicami rekordów lub tablicami wartości, które w rzeczywistości są tabelami jednokolumnowymi. ParseJSON() tablice mogą być konwertowane tylko na jedną kolumnę tabeli wartości dynamicznych i mogą być używane jako takie lub konwertowane na tabele typów rekordów przy użyciu funkcji ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id": 2, ""name"": "two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) ) |
| Tekst | { "stringField": "this is text" } |
Tekst jest jawnym typem w JSON i może być bezpośrednio przekonwertowana. | Text( ParseJSON( "{ ""stringField": ""this is text"" }").stringField ) |
| Dwie opcje | { "available": true }{ "available": "Yes" } |
Dwie opcje są prezentowane jako zlokalizowane ciągi, poparte wartością logiczną. Funkcja JSON() szereguje dwie opcje na wartość logiczną. Nie ma bezpośredniej konwersji z wartości logicznej, liczby lub ciągu na dwie opcje, ale funkcje Switch() lub If() mogą być użyte na tekście, liczbie lub wartości logicznej. | Switch( Wartość logiczna( ParseJSON( "{ ""available": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Przykłady
Dostęp do wartości pól
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Poniższa formuła zwraca tekst
text value:Text( ParseJSON( JsonString ).parent.child ) - Poniższa formuła zwraca numer
567:Value( ParseJSON( JsonString ).number )
Jeśli nazwa pola składa się z nieprawidłowej nazwy identyfikatora, nazwy pól można umieścić w pojedynczych cudzysłowach.
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "0": { "child-field": "text value" } }
- Poniższa formuła zwraca tekst
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Wartości puste
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Próba uzyskania dostępu do pól innych niż istniejące zwraca wartość Blank(). Następująca formuła zwraca wartość
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Wartości JSON
nullsą uważane za Blank(). Następująca formuła zwraca wartośćtrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Proste tablice
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "array": [1, 2, 3] }
- Uzyskiwanie dostępu do drugiej liczby w jednokolumnach tabeli pól tablicy wartości dynamicznych i konwertowanie na liczbę przy użyciu funkcji Value() zwraca wartość
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Konwertowanie jednokolumna tabeli wartości dynamicznych w polu tablicy na jedną kolumnę tabeli liczb
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Rekordy tablic
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Konwertowanie na typową tabelę rekordów bezpośrednio za pomocą funkcji ForAll() można wykonać za pomocą metody
ThisRecord.[fieldname]w celu uzyskania dostępu do pól dynamicznych i przekonwertowania ich na określone typy:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Tablica do tabeli
- Konwertowanie wartości dynamicznych na tabelę przy użyciu funkcji Table() powoduje utworzenie jednokolumny tabeli wartości dynamicznych . Następnie dostęp do obiektu należy uzyskać, korzystając z kolumny
Value(pojedynczej) i przekonwertować na typy, jak uprzednio o wyjaśniono.
Na względu na następujący ciąg JSON w zmiennej o nazwie JsonString
{ "array": [1, 2, 3] }
Funkcja Table() zwraca jednokolumniową tabelę wartości dynamicznych z wartością jednokolumną dla liczby w tablicy...
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"}
] }
Funkcja Table() zwraca jednokolumny tabelę wartości dynamicznych reprezentujących każdy obiekt json w tablicy.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )