Share via


JSON-funksjon

Gjelder: Lerretsapper Modelldrevne apper

Genererer en JSON-tekststreng for en tabell, post eller verdi.

Beskrivelse

JSON-funksjonen returnerer JavaScript Object Notation (JSON)-representasjon av en datastruktur som tekst, slik at den passer for lagring og overføring på tvers av et nettverk. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf og IETF RFC 8259 beskriver formatet, som brukes mye av JavaScript og andre programmeringsspråk.

Lerretsapper støtter datatypene som denne tabellen viser, med detaljer om tekstrepresentasjonen:

Datatype Beskrivelse Resultateksempel
Boolsk Sann eller usann. true
Farge Streng som inneholder den 8-sifrede heksadesimale representasjonen for fargen. Denne representasjonen bruker formatet #rrggbbaa, der rr er den røde komponenten, gg er grønn, bb er blå, og aa er alfakanalen. 00 er fullt gjennomsiktig, og ff er fullt ugjennomsiktig for alfakanalen. Du kan sende strengen til ColorValue-funksjonen. "#102030ff"
Valuta Tall som bruker riktig desimalskilletegn for brukerens språk. Vitenskapelig notasjon brukes hvis det er nødvendig. 1.345
Date Streng som inneholder datoen i ISO 8601 åååå-mm-dd-format. "2019-03-31"
Dato/klokkeslett Streng som inneholder et ISO 8601-dato/klokkeslett. Dato/klokkeslett-verdier er i UTC, som avsluttende "Z" angir. "2019-03-31T22:32:06.822Z"
GUID Streng som inneholder GUID-verdien. Små bokstaver. "751b58ac-380e-4a04-a925-9f375995cc40"
Bilde, medier Hvis JSONFormat.IncludeBinaryData er angitt, kodes mediefiler i en streng. Webreferanser som bruker http: eller https: URL-skjema, endres ikke. Referanser til binære data i minnet, kodes med formatet "data:mimetype;base64,.... Data i minnet inneholder bilder som brukere registrerer ved hjelp av Camera-kontrollen og andre referanser med appres: og blob: URL-skjemaer. "data:image/jpeg;base64,/9j/4AA..."
Antall Tall som bruker riktig desimalskilletegn for brukerens språk. Vitenskapelig notasjon brukes hvis det er nødvendig. 1.345
Alternativsett Numerisk verdi for valget, ikke etiketten som brukes for visning. Den numeriske verdien brukes fordi den er språkuavhengig. 1001
Time Streng som inneholder et ISO 8601 hh:mm:ss.fff-format. "23:12:49.000"
Oppføring Kommadelt liste, mellom { og }, for felt og tilhørende verdier. Denne notasjonen ligner på oppføringer i lerretsapper, men navnet er alltid mellom doble anførselstegn. Dette formatet støtter ikke oppføringer som er basert på mange-til-én-relasjoner. { "First Name": "Fred", "Age": 21 }
Table Kommadelt liste, mellom [ og ], for oppføringer. Dette formatet støtter ikke tabeller som er basert på én-til-mange-relasjoner. Bruk alternativet JSONFormat.FlattenValueTables til å fjerne oppføringen for enkeltkolonnetabeller med kolonnen Verdi. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
To alternativer Boolsk verdi for to-alternativet, sann eller usann, ikke etiketten som brukes til visning. Den boolske verdien brukes fordi den er språkuavhengig. false
Hyperkobling, tekst Streng mellom doble anførselstegn. Funksjonen avbryter innebygde doble anførselstegn med omvendt skråstrek, erstatter linjeskift med "\n", og gjør andre standard JavaScript-erstatninger. "This is a string."

Angi det valgfrie Format-argumentet for å kontrollere hvor leselig resultatet er, og hvordan datatyper som ikke støttes, og binære data skal håndteres. Som standard er utdataene så kompakte som mulig uten unødvendige mellomrom eller linjeskift, og datatyper som ikke støttes, og binære data er ikke tillatt. Du kan kombinere flere formater hvis du angir &-operatoren.

JSONFormat-opplisting Description
JSONFormat.Compact Standard. Utdataene er så kompakte som mulig uten tillagte mellomrom eller linjeskift.
JSONFormat.FlattenValueTables Som en Verditabell fører [1,2,3]-notasjon til en tabell som inneholder oppføringer der hver oppføring har én Verdi-kolonne. I JSON representerer den samme notasjonen en matrise med tre tall. Dette alternativet flater ut en Power Fx-verditabell til en JSON-egendefinert matrise i stedet for en matrise med oppføringer for å gjøre interoperabilitet mellom de to enklere.
JSONFormat.IndentFour Utdataene inneholder et linjeskift for hver kolonne og nestingnivå og bruker fire mellomrom for hvert innrykksnivå for å forbedre lesbarheten.
JSONFormat.IncludeBinaryData Resultatet inkluderer kolonner for bilde, video og lydklipp. Dette formatet kan øke størrelsen på resultatet dramatisk, og redusere ytelsen til appen.
JSONFormat.IgnoreBinaryData Resultatet inkluderer ikke kolonner for bilde, video eller lydklipp. Hvis du verken angir JSONFormat.IncludeBinaryData eller JSONFormat.IgnoreBinaryData, gir funksjonen en feilmelding hvis den møter binære data.
JSONFormat.IgnoreUnsupportedTypes Datatyper som ikke støttes, er tillatt, men resultatet inkluderer ikke dem. Som standard gir datatyper som ikke støttes, en feil.

Bruk ShowColumns- og DropColumns-funksjonene til å kontrollere hvilke data resultatet inkluderer, og til å fjerne datatyper som ikke støttes.

Siden JSON kan være både minne- og beregningsintensivt, kan du bare bruke denne funksjonen i virkemåtefunksjoner. Du kan hente resultatet fra JSON til en variabel, som du deretter kan bruke i dataflyten.

Hvis en kolonne har både et visningsnavn og et logisk navn, inneholder resultatet det logiske navnet. Visningsnavn gjenspeiler språket til appbrukeren, og er derfor upassende for dataoverføring til en felles tjeneste.

Syntaks

JSON( DataStructure [, Format ] )

  • DataStructure – obligatorisk. Datastrukturen som skal konverteres til JSON. Tabeller, oppføringer og primitive verdier støttes, tilfeldig nestet.
  • Format – valgfritt. JSONFormat-opplistingsverdi. Standardverdien er JSONFormat.Compact, som ikke legger til linjeskift eller mellomrom og blokkerer binære data og kolonner som ikke støttes.

Eksempler

Hierarkiske data

  1. Sett inn en Button-kontroll, og angi OnSelect-egenskapen til denne formelen.

    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. Velg knappen mens du holder nede ALT.

    CitiesByCountry-samlingen opprettes med denne datastrukturen, som du kan vise ved å velge SamlingerFil-menyen, og deretter velge navnet på samlingen.

    CitiesByCountry-samling.

    Du kan også vise denne samlingen ved å velge Innstillinger>Kommende funksjoner>Aktiver resultatvisning på formelrad, velge navnet på samlingen i formelfeltet, og deretter velge pil ned ved siden av navnet på samlingen under formellinjen.

    Samling i resultatvisningen for formellinjen.

  3. Sett inn en knapp til, og angi OnSelect-egenskapen til denne formelen:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Denne formelen angir den globale variabelen CitiesByCountryJSON til JSON-representasjonen for CitiesByCountry.

  4. Velg knappen mens du holder nede ALT.

  5. Sett inn en Label, og angi Text-egenskapen til denne variabelen:

    CitiesByCountryJSON
    

    Etiketten viser dette resultatet, alle på én linje uten mellomrom, som passer for overføring på tvers av et nettverk:

    [
      {
        "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. Endre formelen for den andre knappen for å gjøre utdataene mer lesbar.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Velg den andre knappen mens du holder nede ALT-tasten.

    Etiketten viser det mer leselige resultatet.

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

Bilder og medier i base64

  1. Legg til en Image-kontroll.

    Denne kontrollen gir SampleImage med den.

  2. Legg til en Button-kontroll, og sett OnSelect-egenskapen til denne formelen.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Velg knappen mens du holder nede ALT.

  4. Legg til en etikett, og angi Text-egenskapen til denne variabelen.

    ImageJSON
    
  5. Endre størrelsen på kontrollen, og reduser skriftstørrelsen etter behov for å vise det meste av resultatet.

    Etiketten viser tekststrengen som JSON-funksjonen registrerte.

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

Verditabeller

Denne formelen:

JSON( [1,2,3] )

produserer tekststrengen [{"Verdi":1},{"Verdi":2},{"Verdi":3}].

Samme formel med alternativet JSONFormat.FlattenValueTables:

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

produserer tekststrengen [1,2,3].

Vær oppmerksom på at alternativet FlattenValueTables ikke har noen innvirkning når du bruker JSON med samlingene CityPopulations eller CitiesByCountry fordi disse tabellene ikke er Verdi-tabeller. En verditabell har én enkelt kolonne, og den må ha navnet Verdi.