Deli putem


JSON funkcija

Važi za: Canvas aplikacije Model-driven aplikacije Power Pages

Generiše JSON tekstualnu nisku za tabelu, zapis ili vrednost.

Opis

Funkcija JSON vraća JavaScript Object Notation (JSON) reprezentaciju strukture podataka kao teksta, tako da je pogodna za skladištenje ili prenošenje preko mreže. [ECMA-404] (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf i IETF RFC 8259 opisuju format, koji uveliko koriste JavaScript i drugi programski jezici.

Aplikacije sa podlogom podržavaju tipove podataka koje ova tabela navodi, uz detalje o njihovim reprezentacijama teksta:

Tip podataka Opis Primer rezultata
Logička vrednost true ili false. true
Boja Niska koja sadrži osmocifrenu heksadecimalnu reprezentaciju boje. Ova reprezentacija ima format #rrggbbaa, gde je rr crvena komponenta, gg je zelena, bb je plava, a aa je alfa kanal. Za alfa kanal, 00 je potpuno transparentan, a ff je u potpunosti neproziran. Možete preneti nisku u funkciju ColorValue. "#102030ff"
Valuta Broj koji koristi odgovarajući znak za razdvajanje decimala za jezik korisnika. Naučni zapis se koristi ako je potrebno. 1.345
Datum Niska koja sadrži datum u ISO 8601 formatu yyyy-mm-dd. "2019-03-31"
Datum i vreme Niska koja sadrži ISO 8601 datum/vreme. Vrednosti datum/vreme su u UTC, kao što označava završetak „Z“. "2019-03-31T22:32:06.822Z"
GUID Niska koja sadrži GUID vrednost. Slova su mala. "751b58ac-380e-4a04-a925-9f375995cc40"
Slika, mediji Ako je naveden JSONFormat.IncludeBinaryData , medijske datoteke se kodira u nisku. Veb-reference koje koriste http: ili https: šemu URL adrese se ne menjaju. Reference na binarne podatke u memoriji su kodirane pomoću formata "data:mimetype;base64,...". Podaci u memoriji uključuju slike koje korisnici snimaju koristeći kontrolu Kamera i bilo koje druge reference sa appres: i blob: šemama URL adrese. "data:image/jpeg;base64,/9j/4AA..."
Broj Broj koji koristi odgovarajući znak za razdvajanje decimala za jezik korisnika. Naučni zapis se koristi ako je potrebno. 1.345
Skup opcija Numerička vrednost izbora, a ne oznaka koja se koristi za prikaz. Numerička vrednost se koristi jer je njen jezik nezavisan. 1001
Vreme Niska koja sadrži ISO 8601 u formatu hh:mm:ss.fff. "23:12:49.000"
Zapis Lista polja i njihovih vrednosti, razdvojena zarezima između { i }. Ovaj oblik podseća na oblik zapisa u aplikacijama sa podlogom, ali ime je uvek između dvostrukih navodnika. Ovaj format ne podržava zapise koji se zasnivaju na relacijama „više prema jedan“. { "First Name": "Fred", "Age": 21 }
Table Spisak zapisa, razdvojenih zarezom između [ i ]. Ovaj format ne podržava tabele koji se zasnivaju na relacijama „jedan prema više“. Koristite opciju JSONFormat.FlattenValueTables da biste uklonili zapis za tabele sa jednom kolonom sa kolonom pod imenom Vrednost. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dve opcije Logička vrednost od dve opcije, tačno ili netačno, a ne oznaka koja se koristi za prikaz. Logička vrednost se koristi jer je njen jezik nezavisan. false
Hiperveza, Tekst Niska između dvostrukih navodnika. Funkcija izbegava ugrađene dvostruke navodnike pomoću kose crte unazad, a nove crte zamenjuje sa „\n“, i vrši druge standardne zamene JavaScript modula. "This is a string."

Navedite opcionalni argument Format da biste kontrolisali koliko je rezultat čitljiv i kako se rukuje nepodržanim i binarnim vrstama podataka. Podrazumevano, izlaz je što kompaktniji, bez nepotrebnih razmaka ili novih linija, a nepodržani tipovi podataka i binarni podaci nisu dozvoljeni. Ako navedete operator&operator, možete kombinovati više formata.

Numerička vrednost JSONFormat Opis
JSONFormat.Compact Podrazumevano. Izlaz je najkompaktniji mogući bez dodatih razmaka ili novih linija.
JSONFormat.FlattenValueTables Kao tabela "Vrednost", notacija [1,2,3] rezultira tabelom koja sadrži zapise u kojima svaki zapis ima jednu kolonu "Vrednost ". U JSON-u, ta ista notacija predstavlja niz od tri broja. Da bi se olakšala interoperabilnost između njih, ova opcija spljošti Power Fx tabelu vrednosti na JSON prijateljski niz umesto niza zapisa.
JSONFormat.IndentFour Da bi se poboljšala čitljivost, izlazna vrednost sadrži novu liniju za svaku kolonu i nivo ugnežđivanja, a koristi i četiri razmaka za svaki nivo uvlačenja.
JSONFormat.IncludeBinaryData Rezultat uključuje kolone za slike, video i audio snimke. Ovaj format može dramatično povećati veličinu rezultata i degradirati performanse aplikacije.
JSONFormat.IgnoreBinaryData Rezultat ne uključuje kolone za slike, video niti audio snimke. Ako ne navedete ni JSONFormat.IncludeBinaryData ni JSONFormat.IgnoreBinaryData, funkcija će napraviti grešku ako naiđe na binarne podatke.
JSONFormat.IgnoreUnsupportedTypes Nepodržani tipovi podataka su dozvoljeni, ali rezultat ih neće uključivati. Podrazumevano, nepodržani tipovi podataka proizvode grešku.

Koristite funkcije ShowColumns i DropColumns da biste kontrolisali koje podatke rezultat uključuje i uklanjali nepodržane tipove podataka.

Zbog toga što JSON može biti memorija, a može i da računa intenzivno, ovu funkciju možete koristiti samo u funkcijama ponašanja. Rezultat možete da snimite iz JSON u promenljivu, koju zatim možete da koristite u toku podataka.

Ako kolona sadrži i ime za prikaz i logičko ime, rezultat sadrži logičko ime. Imena za prikaz odražavaju jezik korisnika aplikacije i zbog toga su neprikladna za prenos podataka na zajedničku uslugu.

Sintaksa

JSON( DataStructure [, Format ] )

  • DataStructure – Obavezno. Struktura podataka za konvertovanje u JSON. Tabele, zapisi i primitivne vrednosti su podržane, a i proizvoljno ugnežđene.
  • Format – Opcionalno. JSONFormat numerička vrednost. Podrazumevana vrednost je JSONFormat.Compact, koji ne dodaje nove linije ili razmake i blokira binarne podatke i nepodržane kolone.

Primeri

Hijerarhijski podaci

  1. Umetnite kontrolu Dugme i podesite njeno svojstvo OnSelect prema ovoj formuli.

    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. Dok držite taster Alt pritisnut, izaberite dugme.

    Kolekcija CitiesByCountry se kreira sa ovom strukturom podataka koju možete prikazati izborom Kolekcije u meniju Datoteka, a zatim izaberite naziv kolekcije.

    CitiesByCountry kolekcija.

    Ovu kolekciju takođe možete prikazati ako izaberete meni Postavke>Predstojeće funkcije>Omogući prikaz rezultata na traci sa formulama, ako izaberete naziv kolekcije na traci sa formulama, a zatim odaberete strelicu nadole pored naziva kolekcije ispod trake sa formulama.

    Kolekcija u prikazu rezultata u polje za formulu.

  3. Umetnite drugo dugme i podesite njegovo svojstvo OnSelect prema ovoj formuli:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Ova formula postavlja globalnu promenljivu CitiesByCountryJSON na predstavljanje JSON za CitiesByCountry.

  4. Dok držite taster Alt pritisnut, izaberite dugme.

  5. Umetnite kontrolu Oznaka, a zatim podesite njeno svojstvo Text na ovu promenljivu.

    CitiesByCountryJSON
    

    Oznaka prikazuje ovaj rezultat, sve na jednoj liniji bez razmaka, pogodnu za prenos putem mreže:

    [
      {
        "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. Promenite formulu drugog dugmeta da bi rezultat bio čitljiviji.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Dok držite taster Alt pritisnut, izaberite drugo dugme.

    Oznaka prikazuje čitljiviji rezultat.

    [
      {
        "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"
      }
    ]
    

Slike i mediji u base64

  1. Dodajte kontrolu Image.

    Ova kontrola donosi SampleImage sa njim.

  2. Dodajte kontrolu Dugme i podesite njeno svojstvo OnSelect prema ovoj formuli.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Dok držite taster Alt pritisnut, izaberite dugme.

  4. Dodajte oznaku i podesite njeno svojstvo Text prema ovoj promenljivoj:

    ImageJSON
    
  5. Promenite veličinu kontrole i smanjite veličinu fonta prema potrebi da biste prikazali većinu rezultata.

    Oznaka prikazuje tekstualni nisku koju je uhvatila funkcija JSON.

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

Tabele vrednosti

Ova formula:

JSON( [1,2,3] )

Daje tekstualnu nisku [{"Vrednost":1},{"Vrednost":2},{"Vrednost":3}].

Ista formula sa opcijom JSONFormat.FlattenValueTables:

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

Daje tekstualnu nisku [1,2,3].

Imajte na kraju da opcija FlattenValueTables nema uticaja kada koristite JSON sa CityPopulations ili CitiesByCountry kolekcijama jer ove tabele nisu tabele vrednosti. Tabela "Vrednost" ima jednu kolonu i mora se zvati "Vrednost".