Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
Se aplică la: Aplicații
pânză Copilot Studio
Aplicații
bazate pe modele Power Platform CLI
Dataverse funcții
Power Pages
Interpretează un șir JSON și returnează o valoare dinamică sau o valoare tastată specifică dacă este furnizat un tip.
Important
- Utilizarea celui de-al doilea argument pentru a ParseJSON efectua conversia la un obiect tastat este o caracteristică experimentală.
- Caracteristicile în regim experimental nu sunt destinate utilizării în producție și pot avea funcționalitate restricționată. Aceste funcții sunt disponibile înainte de lansarea oficială, astfel încât să puteți obține acces anticipat și să oferi feedback. Mai multe informații: Înțelegeți caracteristicile experimentale, de previzualizare și perimate în aplicațiile create pe planșă
- Comportamentul descris de acest articol este disponibil numai atunci când Tipuri definite de utilizator funcția experimentală din Setări > Funcții viitoare > Experimental este activat (este dezactivat implicit).
- Feedback-ul dumneavoastră este foarte valoros pentru noi. Vă rugăm să ne spuneți ce părere aveți pe forumul comunității Power Apps funcții experimentale.
Descriere
Funcția ParseJSON analizează un șir JSON valid și returnează o valoare dinamică reprezentând structura JSON.
Opțional, utilizați al doilea argument pentru a converti JSON într-un obiect tipat care poate fi utilizat direct în Power Fx formule. Acest lucru face rezultatul mai ușor de consumat, deoarece conversiile și constrângerile la punctul de utilizare nu mai sunt necesare. JSON netipizat este mapat la tipul cu aceste reguli:
- Coloanele de tip care nu sunt prezente în JSON sunt completate cu blank.
- Coloanele din JSON care nu sunt prezente în tip sunt ignorate.
- Coloanele care sunt atât în tip, cât și în JSON, valoarea JSON trebuie să fie coercibilă pentru tip.
ParseJSON Funcția poate returna erori dacă textul nu este JSON valid conform formatului JSON (JavaScript Object Notation) descris în ECMA-404 și IETF RFC 8259.
Sintaxă
ParseJSON( JSONString [ , Tip ] )
- JSONString – Obligatoriu. Structura JSON reprezentată ca text.
- Tastați - Opțional. Definiția Power Fx tip pentru structura JSON. Fără acest argument, ParseJSON returnează o valoare dinamică; cu aceasta funcția returnează o anumită valoare tastată.
Conversie valori dinamice
Fără al doilea argument, ParseJSON returnează o valoare dinamică care necesită conversia explicită a valorilor de câmp în tipurile de date acceptate. Următorul tabel listează tipurile de date în Power Apps și un tip de date JSON corespunzător și modul de conversie a acestuia.
| Tip de date | Exemple JSON | Descriere | Exemplu de conversie |
|---|---|---|---|
| Boolean | { "bool": true } |
Booleanul este un tip explicit în JSON și poate fi convertit direct. | Boolean( ParseJSON("{ ""bool": true }").bool ) |
| Culoare | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Nu există niciun tip de culoare în JSON. Valorile de culoare pot fi create din numere întregi RGBA sau șiruri hexazecimale. |
ColorValue( ParseJSON( "{ ""culoare": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r": 255, ""g": 128, ""b"":0, ""a": 0,5 }" ) }, RGBA( Valoare( uo.r ), Valoare( uo.g ), Value( uo.b ), Value( uo.a ) ) ) |
| Monedă, număr | { "numbervalue": 123.5 } |
Numerele sunt reprezentate direct în JSON cu un punct ( . ) ca separator zecimal. | Value( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue ) |
| Dată, DateTime, Oră | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON nu are un tip de dată sau oră, așa că poate reprezenta doar date și ore ca șiruri. O valoare dinamică poate fi convertită direct dintr-un șir în format ISO 8601 într-o dată, oră sau dată-oră. Pentru alte formate mai întâi convertiți câmpul JSON în text utilizând funcția Text() și apoi utilizați funcția DateValue(), TimeValue() sau DateTimeValue( ), care va folosi în mod implicit limba setărilor utilizatorului curent. |
DateValue( ParseJSON("{ "rezervare"": ""2022-05-10"" }").rezervare ) DateValue( Text( ParseJSON("{ "rezervare"": ""5 mai 2022"" }").rezervare ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON nu are un tip de date pentru GUI-uri, astfel încât acestea pot fi reprezentate doar ca șiruri. | GUID( ParseJSON("{ "id":"123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| Hyperlink, Imagine, Media | { "URI": "https://northwindtraders.com/logo.jpg" } |
Aceste tipuri de date sunt tipuri de date text și pot fi convertite în text și apoi utilizate în Power Apps. | Text( ParseJSON("{ "URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Alegere | { "status": 1 }{ "status": "Closed" } |
Opțiunile sunt prezentate ca șiruri localizate, susținute de un număr. Funcția JSON() serializează o alegere la numărul său de rezervă. Nu există o conversie directă de la număr sau șir la o alegere, dar funcțiile Switch() sau If() poate fi folosit pe valoarea textului sau a numărului. | Switch( Value( ParseJSON( "{ ""status":1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Record | { "field": "value" } |
Nu există nicio conversie directă de la un obiect JSON la o structură de înregistrare, dar câmpurile individuale pot fi regăsite din valoarea dinamică pentru a forma o înregistrare. | { câmp: Text( ParseJSON( "{ "câmp"": ""valoare"" }" ).field ) } |
| Referință înregistrare | nu se aplică | Referințele înregistrărilor sunt unice pentru sursele de date și nu pot fi serializate sau neserializate. Valorile câmpurilor care reprezintă chei unice ar putea fi utilizate în JSON pentru a identifica înregistrările care pot fi apoi căutate. | nu se aplică |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON poate conține matrice, care pot fi convertite în tabele. Aceste valori pot fi vectori de înregistrări sau vectori de valori care sunt efectiv tabele cu o singură coloană. ParseJSON() matricele pot fi convertite numai într-un singur tabel coloană de valori dinamice și pot fi utilizate ca atare sau convertite în tabele tastate de înregistrări utilizând ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name": ""one"" }, { ""id"": 2, ""name"} ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| SMS | { "stringField": "this is text" } |
Textul este un tip explicit în JSON și poate fi convertit direct. | Text( ParseJSON( "{ ""stringField": ""acesta este text"" }").stringField ) |
| Două opțiuni | { "available": true }{ "available": "Yes" } |
Două opțiuni sunt prezentate ca șiruri de caractere localizate, susținute de un boolean. Funcția JSON() serializează două opțiuni la valoarea sa booleană. Nu există o conversie directă de la boolean, număr sau șir la o alegere la două opțiuni, dar funcțiile Switch() sau If() poate fi folosit pe valoarea textului, numărului sau boolean. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), fals, Availability.No, true, Disponibilitate.Da ) |
Exemple
Accesarea valorilor câmpurilor
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Următoarea formulă, returnează textul
text value:Text( ParseJSON( JsonString ).parent.child ) - Următoarea formulă, returnează numărul
567:Value( ParseJSON( JsonString ).number )
În cazul în care un nume de câmp constă dintr-un nume de identificare nevalid, puteți pune numele câmpurilor între ghilimele simple.
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "0": { "child-field": "text value" } }
- Următoarea formulă, returnează textul
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Blanks
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Încercarea de a accesa câmpuri inexistente returnează Blank(). Următoarea formulă returnează
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Valorile JSON
nullsunt considerate Blank(). Următoarea formulă returneazătrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Matrice simple
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "array": [1, 2, 3] }
- Accesarea celui de-al doilea număr din tabelul cu o singură coloană al câmpului matrice cu valori dinamice și conversia la un număr utilizând Value() returnează
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Conversia tabelului cu o singură coloană a valorilor dinamice din câmpul matrice, într-un tabel cu o singură coloană de numere
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Matrice de înregistrări
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Conversia la un tabel tastat de înregistrări direct cu ForAll() se poate efectua utilizând
ThisRecord.[fieldname]pentru a accesa câmpuri dinamice și a le converti în anumite tipuri:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matrice la tabel
- Conversia valorilor dinamice într-un tabel utilizând funcția Table() are ca rezultat un tabel cu o singură coloană de valori dinamice . Obiectul trebuie apoi accesat utilizând coloana
Value(singură) și convertit în tipuri, așa cum s-a explicat anterior.
Având în vedere următorul șir JSON într-o variabilă numită JsonString
{ "array": [1, 2, 3] }
Table() returnează un tabel cu o singură coloană de valori dinamice cu o singură coloană pentru numărul din matrice...
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() returnează un tabel cu o singură coloană de valori dinamice care reprezintă fiecare obiect json din matrice.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )