Partajați prin


Funcție JSON

Se aplică pentru: planșă de lucru apps Aplicații bazate pe model Power Pages

Generează un șir text JSON pentru un tabel, o înregistrare sau o valoare.

Descriere

Funcția JSON returnează reprezentarea JavaScript Object Notation (JSON) a unei structuri de date ca text, astfel încât să fie potrivită pentru stocarea sau transmiterea în rețea. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf și IETF RFC 8259 descriu formatul, care este utilizat pe scară largă de JavaScript și alte limbaje de programare.

Aplicațiile proiectate pe pânză acceptă tipuri de date că acest tabel listează detalii despre reprezentarea textului lor:

Tip de date Descriere Exemplu de rezultat
Boolean adevărat sau fals. true
Culoare Șirul care conține reprezentarea hexazecimală din 8 cifre pentru culoare. Această reprezentare are formatul #rrggbbaa, unde rr este componenta roșie, gg este verde, bb este albastru și aa este canalul alfa. Pentru canalul alfa, 00 este complet transparentă și ff este complet opacă. Puteți trece șirul la funcția ColorValue. "#102030ff"
Valută Număr care utilizează separatorul zecimal adecvat pentru limba utilizatorului. Notația științifică este folosită dacă este nevoie. 1.345
Data Șirul care conține data din formatul ISO 8601 aaaa-ll-zz. "2019-03-31"
DateTime Șir care conține o dată/oră ISO 8601. Valorile dată/oră sunt în UTC, după cum indică sfârșitul "Z". "2019-03-31T22:32:06.822Z"
GUID Șir care conține valoarea GUID. Literele sunt minuscule. "751b58ac-380e-4a04-a925-9f375995cc40"
Imagine, Media Dacă este specificat JSONFormat.IncludeBinaryData , fișierele media sunt codificate într-un șir. Referințele web care utilizează schema URL http: sau https: nu sunt modificate. Referințele la datele binare din memorie sunt codificate cu formatul "date:mimetype;base64,...“. Datele din memorie includ imagini pe care utilizatorii le captează folosind controlul Camera și orice alte referințe cu schemele URL appres: și blob:. "data:image/jpeg;base64,/9j/4AA..."
Număr Număr care utilizează separatorul zecimal adecvat pentru limba utilizatorului. Notația științifică este folosită dacă este nevoie. 1.345
set de opțiuni Valoarea numerică a alegerii, nu eticheta utilizată pentru afișare. Valoarea numerică este utilizată deoarece este independentă de limbă. 1001
Timp Șir care conține un format ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Înregistra Lista delimitată prin virgule, între { și }, a câmpurilor și valorilor acestora. Această notație seamănă cu cea pentru înregistrările din aplicațiile proiectate pe pânză, dar numele este întotdeauna între ghilimele duble. Acest format nu acceptă înregistrări care se bazează pe relații mulți-la-unu. { "First Name": "Fred", "Age": 21 }
Masă Lista delimitată prin virgule, între [ și ], a înregistrărilor. Acest format nu acceptă tabele care se bazează pe relații unu-la-mulți. Utilizați opțiunea JSONFormat.FlattenValueTables pentru a elimina înregistrarea pentru tabelele cu o singură coloană cu coloana numită Valoare. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Două opțiuni Valoarea booleană a celor două opțiuni, true sau false, nu eticheta folosită pentru afișare. Valoarea booleană este utilizată deoarece este independentă de limbă. false
Hyperlink, Text Șir între ghilimele duble. Funcția omite ghilimele dublu încorporate cu o bară oblică inversă, înlocuiește liniile noi cu "\n" și face alți înlocuitori JavaScript standard. "This is a string."

Specificați argumentul opțional Format pentru a controla cât de lizibil este rezultatul și modul în care sunt gestionate și tipurile de date binare. În mod implicit, ieșirea este cât se poate de compactă, fără spații sau linii noi inutile, iar tipurile de date și datele binare neacceptate nu sunt permise. Puteți combina mai multe formate dacă specificați operatorul & .

Enumerare JSONFormat Descriere
JSONFormat.Compact Implicit. Ieșirea este cât se poate de compactă, fără spații sau linii noi adăugate.
JSONFormat.FlattenValueTables Ca tabel de valori, [1,2,3] notația are ca rezultat un tabel care conține înregistrări în care fiecare înregistrare are o singură Valoare coloană. În JSON, aceeași notație reprezintă o matrice de trei numere. Pentru a ușura interoperabilitatea între cele două, această opțiune aplatizează un Power Fx tabel de valori într-o matrice prietenoasă JSON în loc de o matrice de înregistrări.
JSONFormat.IndentFour Pentru a îmbunătăți lizibilitatea, rezultatul conține o linie nouă pentru fiecare coloană și nivel de imbricare și folosește patru spații pentru fiecare nivel de indentare.
JSONFormat.IncludeBinaryData Rezultatul include coloane de imagine, video și clipuri audio. Acest format poate crește dramatic dimensiunea rezultatului și poate afecta performanța aplicației.
JSONFormat.IgnoreBinaryData Rezultatul nu include coloane de imagine, video sau clipuri audio. Dacă nu specificați nici JSONFormat.IncludeBinaryData nici JSONFormat.IgnoreBinaryData, funcția produce o eroare dacă întâlnește date binare.
JSONFormat.IgnoreUnsupportedTypes Tipurile de date neacceptate sunt permise, dar rezultatul nu le va include. În mod implicit, tipurile de date neacceptate produc o eroare.

Utilizați funcțiile ShowColumns și DropColumns pentru a controla ce date include rezultatul și pentru a elimina tipurile de date neacceptate.

Pentru că JSON poate fi atât de memorie, cât și de calcul intensiv, puteți utiliza această funcție doar în funcții comportamentale. Puteți captura rezultatul JSON într-o variabilă, pe care îl puteți folosi apoi în fluxul de date.

Dacă o coloană are atât un nume afișat, cât și un nume logic, rezultatul conține numele logic. Numele afișate reflectă limba utilizatorului aplicației și, prin urmare, sunt inadecvate pentru transferul de date către un serviciu comun.

Sintaxă

JSON( DataStructure [, Format ] )

  • DataStructure – Obligatoriu. Structura de date pentru a converti în JSON. Tabelele, înregistrările și valorile primitive sunt acceptate, imbricate în mod arbitrar.
  • Format - Opțional. Valoarea JSONFormat enumerare. Valoarea implicită este JSONFormat.Compact, care nu adaugă linii noi sau spații și blochează datele binare și coloanele neacceptate.

Exemple

Date ierarhice

  1. Introduceți un control Button, apoi setați-i proprietatea OnSelect la următoarea formulă.

    ClearCollect( CityPopulations,
        { City: "London",    Country: "United Kingdom", Population: 8615000 },
        { City: "Berlin",    Country: "Germany",        Population: 3562000 },
        { City: "Madrid",    Country: "Spain",          Population: 3165000 },
        { City: "Hamburg",   Country: "Germany",        Population: 1760000 },
        { City: "Barcelona", Country: "Spain",          Population: 1602000 },
        { City: "Munich",    Country: "Germany",        Population: 1494000 }
    );
    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
    
  2. Selectați butonul în timp ce țineți apăsată tasta Alt.

    Colecția CitiesByCountry este creată cu această structură de date, pe care o puteți afișa selectând Colecții pe Fișier, apoi selectați numele colecției.

    Colecția CitiesByCountry.

    Puteți afișa și această colecție selectând Setări>Caracteristici viitoare>Activați vizualizarea rezultatului barei de formule, selectând numele colecției din bara de formule, apoi selectând săgeata în jos de lângă numele colecției de sub bara de formule.

    Colecție în vizualizarea rezultatelor barei de formule.

  3. Introduceți alt buton, apoi setați-i proprietatea OnSelect la următoarea formulă:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Această formulă stabilește variabila globală CitiesByCountryJSON la reprezentarea JSON pentru CitiesByCountry.

  4. Selectați butonul în timp ce țineți apăsată tasta Alt.

  5. Introduceți un control Etichetă și setați proprietatea Text la această variabilă:

    CitiesByCountryJSON
    

    Eticheta arată acest rezultat, toate pe o singură linie fără spații, potrivite pentru transmitere prin rețea:

    [
      {
        "Cities": [{ "City": "London", "Population": 8615000 }],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          { "City": "Berlin", "Population": 3562000 },
          { "City": "Hamburg", "Population": 1760000 },
          { "City": "Munich", "Population": 1494000 }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          { "City": "Madrid", "Population": 3165000 },
          { "City": "Barcelona", "Population": 1602000 }
        ],
        "Country": "Spain"
      }
    ]
    
  6. Schimbați formula celui de-al doilea buton pentru a face rezultatul mai lizibil.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Selectați al doilea buton în timp ce țineți apăsată tasta Alt.

    Eticheta arată rezultatul mai lizibil.

    [
      {
        "Cities": [
          {
            "City": "London",
            "Population": 8615000
          }
        ],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          {
            "City": "Berlin",
            "Population": 3562000
          },
          {
            "City": "Hamburg",
            "Population": 1760000
          },
          {
            "City": "Munich",
            "Population": 1494000
          }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          {
            "City": "Madrid",
            "Population": 3165000
          },
          {
            "City": "Barcelona",
            "Population": 1602000
          }
        ],
        "Country": "Spain"
      }
    ]
    

Imagini și media în base64

  1. Adăugați un control Image.

    Acest control aduce SampleImage cu acesta.

  2. Adăugați un control Button, apoi setați-i proprietatea OnSelect la următoarea formulă.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Selectați butonul în timp ce țineți apăsată tasta Alt.

  4. Adăugați o etichetă și setați proprietatea Text la această variabilă.

    ImageJSON
    
  5. Redimensionați controlul și reduceți dimensiunea fontului după cum este necesar pentru a arăta cea mai mare parte a rezultatului.

    Eticheta arată șirul text pe care funcția JSON capturată.

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
    

Tabelele cu valori

Această formulă:

JSON( [1,2,3] )

Produce șirul de text [{„Valoare”:1},{„Valoare”:2}>,{„Valoare”:3}].

Aceeași formulă cu opțiunea JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

Produce șirul de text [1,2,3].

Rețineți că opțiunea FlattenValueTables nu are niciun impact atunci când utilizați JSON cu colecțiile CityPopulations sau CitiesByCountry , deoarece aceste tabele nu sunt Tabelele cu valori. Un tabel de valori are o singură coloană și trebuie să fie numit „Valoare”.