Dijeli putem


Funkcija JSON-a

Odnosi se na: Aplikacije od gotovih gradivnih elemenata Aplikacije stvorene prema modelu Power Pages

Stvara JSON tekstni niz za tablicu, zapis ili vrijednost.

Opis

Funkcija JSON vraća JavaScript Object Notation (JSON) reprezentaciju strukture podataka u vidu teksta pogodnog za pohranu ili prijenos preko mreže. [ECMA-404] (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf i IETF RFC 8259 opisuju format koji široko koriste JavaScript i drugi programski jezici.

Aplikacije radnog područja podržavaju vrste podataka koje ova tablica navodi zajedno s detaljima o tome kako predstavljaju tekst:

Vrsta podataka Opis Primjer rezultata
Booleov true ili false. true
Color Niz koji sadrži 8-znamenkastu heksadecimalnu oznaku boje. Ova oznaka ima oblik #rrggbbaa, gdje je rr crvena komponenta, gg zelena, bb plava, a aa je alfa kanal. Kod alfa kanala, 00 potpuno je transparentno, a ff potpuno neprozirno. Možete proslijediti niz funkciji ColorValue. "#102030ff"
Valuta Broj koji koristi odgovarajući decimalni razdjelnik za jezik korisnika. Po potrebi se koristi znanstvena notacija. 1.345
Datum Niz koji sadrži datum u obliku ISO 8601 gggg-mm-dd. "2019-03-31"
DateTime Niz koji sadrži datum/vrijeme prema ISO 8601. Vrijednosti datum/vrijeme su u UTC, kao što označava završetak „Z”. "2019-03-31T22:32:06.822Z"
GUID Niz koji sadrži GUID vrijednost. Slova su mala. "751b58ac-380e-4a04-a925-9f375995cc40"
Image, Media Ako je naveden JSONFormat.IncludeBinaryData , medijske datoteke kodiraju se u nizu. Web-reference koje koriste URL shemu http: ili https: se ne mijenjaju. Reference na binarne podatke u memoriji kodirane su u obliku „data:mimetype;base64,...”. Podatci u memoriji mogu biti slike koje korisnici snimaju koristeći kontrolu Camera i bilo koje druge reference s URL shemama appres: i blob:. "data:image/jpeg;base64,/9j/4AA..."
Broj Broj koji koristi odgovarajući decimalni razdjelnik za jezik korisnika. Po potrebi se koristi znanstvena notacija. 1.345
Skup mogućnosti Numerička vrijednost izbora, a ne oznaka koja se koristi za prikaz. Numerička vrijednost koristi se jer ne ovisi o jeziku. 1001
Time Niz koji sadrži oblik hh:mm:ss.fff prema ISO 8601. "23:12:49.000"
Zapis Popis polja i njihovih vrijednosti, razgraničen zarezima, između znakova { i }. Ova notacija podsjeća na zapise u aplikacijama radnog područja, ali naziv je uvijek između dvostrukih navodnika. Ovaj oblik ne podržava zapise koji se temelje na odnosima tipa „više na jedan”. { "First Name": "Fred", "Age": 21 }
Table Popis zapisa, razgraničen zarezima, između znakova [ i ]. Ovaj oblik ne podržava tablice koje se temelje na odnosima tipa „jedan na više”. Pomoću mogućnosti JSONFormat.FlattenValueTables uklonite zapis za tablice s jednim stupcem sa stupcem pod nazivom Vrijednost. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Two option Booleova vrijednost dvije opcije, true ili false, a ne oznaka koja se koristi za prikaz. Booleova vrijednost koristi se jer ne ovisi o jeziku. false
Hiperveza, tekst Niz između dvostrukih navodnika. Ova funkcija obilježava ugrađene dvostruke navodnike obrnutim kosim crtama, znakove novog retka zamjenjuje s „\n” te provodi druge standardne JavaScript zamjene. "This is a string."

Navedite neobvezni argument Format kako biste kontrolirali čitljivost rezultata i način rukovanja s nepodržanim i binarnim vrstama podataka. Prema zadanim postavkama, izlaz je što kompaktniji, bez nepotrebnih razmaka ili novih redaka, a nepodržane vrste podataka i binarni podatci nisu dopušteni. Ako navedete operator , možete kombinirati više oblika.

Numerička vrijednost JSONFormat Opis
JSONFormat.Compact Zadano. Izlaz je što kompaktniji, bez dodanih razmaka ili novih redaka.
JSONFormat.FlattenValueTables Kao tablica Vrijednost, [1,2,3] bilješka rezultira tablicom koja sadrži zapise u kojima svaki zapis ima jedan stupac Vrijednost . U JSON-u, ta ista notacija predstavlja niz od tri broja. Da bi se olakšala interoperabilnost između njih, ova mogućnost poravnava Power Fx tablicu Vrijednost u JSON prijateljsko polje umjesto niza zapisa.
JSONFormat.IndentFour Kako bi se poboljšala čitljivost, izlaz sadrži novi redak za svaki stupac i razinu gniježđenja i koristi četiri razmaka za svaku razinu uvlake.
JSONFormat.IncludeBinaryData Rezultat sadrži stupce slika, video i audioisječaka. Ovaj oblik može drastično povećati veličinu rezultata i pogoršati performanse vaše aplikacije.
JSONFormat.IgnoreBinaryData Rezultat ne sadrži stupce slika, video i audioisječaka. Ako ne navedete ni JSONFormat.IncludeBinaryData ni JSONFormat.IgnoreBinaryData, funkcija stvara pogrešku ako naiđe na binarne podatke.
JSONFormat.IgnoreUnsupportedTypes Nepodržane vrste podataka su dopuštene, ali rezultat ih ne sadrži. Po zadanim postavkama, nepodržane vrste podataka vraćaju pogrešku.

Upotrijebite funkcije ShowColumns i DropColumns kako biste kontrolirali koje podatke rezultat sadrži i uklonili nepodržane vrste podataka.

Budući da JSON može intenzivno koristiti i memoriju i procesor, ovu funkciju možete koristiti samo u funkcijama ponašanja. Rezultat možete zabilježiti iz JSON u neku varijablu, koju možete dalje koristiti u tijeku podataka.

Ako neki stupac sadrži i zaslonsko i logičko ime, rezultat sadrži logičko ime. Zaslonska imena odražavaju jezik korisnika aplikacije i stoga nisu prikladna za prijenos podataka na zajedničku uslugu.

Sintaksa

JSON( podatkovna struktura [, format ] )

  • DataStructure – obavezno. Podatkovna struktura koja se pretvara u JSON. Tablice, zapisi i primitivne vrijednosti su podržane, proizvoljno ugniježđene.
  • Format – neobavezno. Numerička vrijednost JSONFormat. Zadana vrijednost je JSONFormat.Compact, koja ne dodaje nove retke ili razmake i blokira binarne podatke i nepodržane stupce.

Primjeri

Hijerarhijski podatci

  1. Umetnite kontrolu Button i postavite njezino svojstvo OnSelect na ovu formulu.

    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. Odaberite gumb dok držite pritisnutu tipku Alt.

    Zbirka CitiesByCountry stvara se s ovom strukturom podataka koju možete pokazati odabirom Zbirke u izborniku Datoteka, a zatim odabirom naziva te zbirke.

    CitiesByCountry kolekcija.

    Ovu kolekciju možete prikazati tako da odaberete Postavke>Buduće značajke>Omogući prikaz rezultata trake s formulama, odabirom imena kolekcije na traci formula, a zatim odabirom strelice prema dolje pored naziva kolekcije u traci formule.

    Zbirka u prikazu rezultata trake formule.

  3. Umetnite neki drugi gumb i postavite njegovo svojstvo OnSelect na ovu formulu:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

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

  4. Odaberite gumb dok držite pritisnutu tipku Alt.

  5. Umetnite kontrolu Label i postavite njezino svojstvo Text na ovu varijablu.

    CitiesByCountryJSON
    

    Oznaka prikazuje ovaj rezultat, sve u jednom retku bez razmaka, pogodno za prijenos preko 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. Promijenite formulu drugog gumba kako biste poboljšali čitljivost rezultata.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Odaberite drugi gumb dok držite pritisnutu tipku Alt.

    Oznaka pokazuje č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 sa sobom donosi SampleImage.

  2. Dodajte kontrolu Button i postavite njezino svojstvo OnSelect na sljedeću formulu.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Odaberite gumb dok držite pritisnutu tipku Alt.

  4. Dodajte neku oznaku i postavite njezino svojstvo Text na ovu varijablu.

    ImageJSON
    
  5. Promijenite kontrolu i smanjite veličinu fonta prema potrebi kako biste pokazali najveći dio rezultata.

    Oznaka prikazuje tekstni niz koji je zabilježila funkcija JSON.

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

Tablice vrijednosti

Ova formula:

JSON( [1,2,3] )

Stvara tekstni niz [{"Vrijednost":1},{"Vrijednost":2},{"Vrijednost":3}].

Ista formula s mogućnošću JSONFormat.FlattenValueTables:

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

Stvara tekstni niz [1,2,3].

Imajte na umu da opcija FlattenValueTables nema utjecaja pri korištenju JSON-a s zbirkama CityPopulations ili CitiesByCountry jer te tablice nisu tablice vrijednosti. Tablica Vrijednost ima jedan stupac i mora imati naziv "Vrijednost".