Share via


Funkcija JSON

Velja za: Aplikacije Canvas Aplikacije, ki temeljijo na modelu

Ustvari besedilni niz JSON za tabelo, zapis ali vrednost.

Opis

Funkcija JSON vrne ponazoritev podatkovne strukture JavaScript Object Notation (JSON) kot besedilo, tako da je primerna za shranjevanje ali prenos prek omrežja. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf in IETF RFC 8259 opisujeta obliko, ki jo pogosto uporabljajo JavaScript in drugi programski jeziki.

Aplikacije delovnega območja podpirajo vrste podatkov, ki so navedene v tej tabeli skupaj s podrobnosti o njihovi ponazoritvi besedila:

Vrsta podatkov Opis Primer rezultata
Logični true ali false. true
Barva Niz, ki vsebuje osemmestno šestnajstiško ponazoritev barve. Ta ponazoritev ima obliko zapisa #rrggbbaa, kjer je rr rdeča komponenta, gg zelena komponenta, bb modra komponenta, aa pa je kanal alfa. Pri kanalu alfa 00 pomeni popolno prosojnost, ff pa popolno neprosojnost. Niz lahko prenesete v funkcijo ColorValue. "#102030ff"
Valuta Številka, ki za jezik uporabnika uporablja ustrezno decimalno ločilo. Po potrebi se uporabi znanstveni zapis. 1.345
Datum Niz, ki vsebuje datum v obliki zapisa ISO 8601 llll-mm-dd. "2019-03-31"
Datum in čas Niz, ki vsebuje datum/čas ISO 8601. Vrednosti datum/čas sta v UTC, kar označuje končnica »Z«. "2019-03-31T22:32:06.822Z"
GUID Niz, ki vsebuje vrednost GUID. Črke so male. "751b58ac-380e-4a04-a925-9f375995cc40"
Slika, predstavnost Če je podan JSONFormat.IncludeBinaryData , so predstavnostne datoteke kodirane v nizu. Spletne reference, ki uporabljajo shemo URL http: ali https:, se ne spremenijo. Sklici na dvojiške podatke v pomnilniku so kodirani z obliko zapisa "data:mimetype;base64,...". Podatki v pomnilniku vključujejo slike, ki jih uporabniki zajamejo s kontrolnikom Camera, in vse druge sklice s shemami URL appres: in blob:. "data:image/jpeg;base64,/9j/4AA..."
Številka Številka, ki za jezik uporabnika uporablja ustrezno decimalno ločilo. Po potrebi se uporabi znanstveni zapis. 1.345
Nabor možnosti Številska vrednost izbire, ne oznaka, ki se uporablja za prikaz. Številska vrednost se uporablja zato, ker ni odvisna od jezika. 1001
Ura Niz, ki vsebuje obliko zapisa ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Zapis Seznam, ločen z vejico, med { in } ali polji in njihovimi vrednostmi. Ta zapis spominja na zapise v aplikacijah delovnega območja, vendar je ime vedno med dvojnimi narekovaji. Ta oblika zapisa ne podpira zapisov, ki temeljijo na odnosih »mnogo proti ena«. { "First Name": "Fred", "Age": 21 }
Table Seznam, ločen z vejico, med [ in ] v zapisih. Ta oblika zapisa ne podpira tabel, ki temeljijo na odnosih »ena proti mnogo«. Uporabite možnost JSONFormat.FlattenValueTables , da odstranite zapis za tabele z enim stolpcem s stolpcem z imenom Vrednost. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dve možnosti Logična vrednost za dve možnosti, true ali fals, in ne oznaka, ki se uporablja za prikaz. Logična vrednost se uporablja zato, ker ni odvisna od jezika. false
Hiperpovezava, besedilo Niz med dvojnimi narekovaji. Funkcija se izogne vdelanim dvojnim narekovajem s poševnico nazaj, nove vrstice nadomesti z »\n« in naredi druge standardne zamenjave za JavaScript. "This is a string."

Določite neobvezni argument Oblika zapisa in upravljajte, kako berljiv je rezultat in kako se obravnavajo nepodprte vrste in vrste dvojiških podatkov. Privzeto je rezultat čim bolj strnjen, brez nepotrebnih presledkov ali novih vrstic, nepodprte vrste podatkov in dvojiški podatki pa niso dovoljeni. Kombinirate lahko več formatov, če podate operator & .

Enumerator JSONFormat Description
JSONFormat.Compact Privzeto. Rezultat je karseda strnjen, brez dodanih presledkov ali novih vrstic.
JSONFormat.FlattenValueTables Kot Tabela vrednosti, [1,2,3] zapis povzroči tabelo, ki vsebuje zapise, kjer ima vsak zapis eno samo Vrednost stolpec. V JSON ta isti zapis predstavlja niz treh števil. Za lažjo interoperabilnost med tema dvema ta možnost izravna Power Fx tabelo vrednosti v JSON prijazno matriko namesto v matriko zapisov.
JSONFormat.IndentFour Za izboljšanje berljivosti rezultat vsebuje novo vrstico za vsak stolpec in raven gnezdenja ter uporabi štiri presledke za vsako raven zamika.
JSONFormat.IncludeBinaryData Rezultat vključuje stolpce za slike, videoposnetke in zvočne posnetke. Ta oblika zapisa lahko znatno poveča velikost rezultata in zmanjša učinkovitost delovanja vaše aplikacije.
JSONFormat.IgnoreBinaryData Rezultat ne vključuje stolpcev za slike, videoposnetke ali zvočne posnetke. Če ne podate niti JSONFormat.IncludeBinaryData niti JSONFormat.IgnoreBinaryData, funkcija ustvari napako, če naleti na binarne podatke.
JSONFormat.IgnoreUnsupportedTypes Nepodprte vrste podatkov so dovoljene, vendar jih rezultat ne vključi. Nepodprte vrste podatkov privzeto ustvarijo napako.

Uporabite funkciji ShowColumns in DropColumns ter upravljajte, katere podatke vključuje rezultat, in odstranite nepodprte vrste podatkov.

Ker je funkcija JSON lahko zahteven postopek za pomnilnik in računalnik, lahko to funkcijo uporabljate samo v funkcijah delovanja. Rezultat iz funkcije JSON lahko zajamete v spremenljivko, ki jo nato lahko uporabite v podatkovnem toku.

Če ima stolpec prikazno ime in logično ime, rezultat vsebuje logično ime. Prikazna imena odražajo jezik uporabnika aplikacije in so zato neprimerna za prenos podatkov v skupno storitev.

Sintaksa

JSON( DataStructure [, Format ] )

  • DataStructure – obvezno. Struktura podatkov za pretvorbo v JSON. Tabele, zapisi in osnovne vrednosti so podprte in poljubno ugnezdene.
  • Format – izbirno. Vrednost oštevilčenja JSONFormat. Privzeta vrednost je JSONFormat.Compact, ki ne dodaja novih vrstic ali presledkov ter blokira binarne podatke in nepodprte stolpce.

Primeri

Hierarhični podatki

  1. Vstavite kontrolnik Button in nastavite njegovo lastnost OnSelect na to formulo.

    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. Izberite gumb, medtem ko držite tipko Alt.

    Zbirka CitiesByCountry je ustvarjena s to strukturo podatkov, ki jo lahko pokažete tako, da izberete Zbirke v meniju Mapa in nato izberete ime zbirke.

    Zbirka CitiesByCountry.

    To zbirko lahko prikažete tudi tako, da izberete Nastavitve>Prihajajoče funkcije>Omogoči ogled rezultatov vnosne vrstice in izberite ime zbirke v vnosni vrstici ter puščico navzdol ob imenu zbirke pod vnosno vrstico.

    Zbirka v pogledu rezultatov vrstice formule.

  3. Vstavite še en gumb in nastavite njegovo lastnost OnSelect na to formulo:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Ta formula nastavi globalno spremenljivko CitiesByCountryJSON v ponazoritev JSON za CitiesByCountry.

  4. Izberite gumb, medtem ko držite tipko Alt.

  5. Vstavite kontrolnik Label in nastavite njegovo lastnost Besedilo na to spremenljivko:

    CitiesByCountryJSON
    

    Oznaka prikaže ta rezultat, in sicer v celoti v eni vrstici brez presledkov, tako da je primeren za prenos prek omrežja:

    [
      {
        "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. Spremenite formulo drugega gumba, da bo rezultat bolj berljiv.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Medtem ko držite tipko Alt, izberite drugi gumb.

    Oznaka prikazuje bolj berljiv 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 in predstavnost v obliki zapisa Base64

  1. Dodajte kontrolnik Slika.

    Ta kontrolnik doda SampleImage.

  2. Dodajte kontrolnik Button in nastavite njegovo lastnost OnSelect na to formulo.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Izberite gumb, medtem ko držite tipko Alt.

  4. Dodajte oznako in nastavite njeno lastnost Besedilo na to spremenljivko.

    ImageJSON
    
  5. Če želite prikazati večino rezultata, spremenite velikost kontrolnika in zmanjšajte velikost pisave.

    Oznaka prikaže besedilni niz, ki ga je zajela funkcija JSON.

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

Tabele vrednosti

Ta formula:

JSON( [1,2,3] )

Ustvari besedilni niz [{"Value":1},{"Value":2},{"Vrednost":3}].

Ista formula z možnostjo JSONFormat.FlattenValueTables:

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

Ustvari besedilni niz [1,2,3].

Upoštevajte, da možnost FlattenValueTables nima vpliva pri uporabi JSON z zbirkami CityPopulations ali CitiesByCountry , ker te tabele niso Tabele vrednosti. Tabela vrednosti ima en sam stolpec in mora biti imenovan "Vrednost".