Comparteix a través de


Funció JSON

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Genera una cadena de text JSON per a una taula, un registre o un valor.

Descripció

La funció JSON torna la representació del JavaScript Object Notation (JSON) d'una estructura de dades com a text perquè sigui adequada per emmagatzemar-la o transmetre-la a través d'una xarxa. [ECMA-404] (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf i IETF RFC 8259 descriuen el format, que és àmpliament utilitzat per JavaScript i altres llenguatges de programació.

Les aplicacions de llenç són compatibles amb els tipus de dades que mostra aquesta taula amb detalls sobre la seva representació de text:

Tipus de dades Descripció Exemple de resultat
Boolean true o false. true
Color Cadena que conté la representació hexadecimal de 8 dígits del color. Aquesta representació té el format #rrggbbaa, on rr és el component vermell, gg és el verd, bb és el blau, i aa és el canal alfa. Per al canal alfa, 00 és totalment transparent, mentre que ff és totalment opac. Podeu passar la cadena a la funció ColorValue. "#102030ff"
Moneda Número que utilitza el separador decimal adient per a la llengua de l'usuari. La notació científica s'utilitza si cal. 1.345
Data Cadena que conté la data en format ISO 8601 aaaa-mm-dd. "2019-03-31"
Data/Hora Cadena que conté una data i hora en format ISO 8601. Els valors de data i hora es troben en UTC, com indica la terminació "Z". "2019-03-31T22:32:06.822Z"
GUID Cadena que conté el valor de GUID. Les lletres són minúscules. "751b58ac-380e-4a04-a925-9f375995cc40"
Imatge, element multimèdia Si s'especifica JSONFormat.IncludeBinaryData , els fitxers multimèdia es codifiquen en una cadena. Les referències web que utilitzen l'esquema d'adreça URL http: o https: no es modifiquen. Les referències a les dades binàries a la memòria es codifiquen amb el format "data:mimetype;base64,...". Les dades de la memòria inclouen imatges que els usuaris capturen mitjançant el control Càmera i qualsevol altra referència amb els esquemes d'adreça URL appres: i blob:. "data:image/jpeg;base64,/9j/4AA..."
Número Número que utilitza el separador decimal adient per a la llengua de l'usuari. La notació científica s'utilitza si cal. 1.345
Conjunt d'opcions El valor numèric de l'elecció, no l'etiqueta que s'utilitza per visualitzar. El valor numèric s'utilitza perquè és independent de la llengua. 1001
Hora Cadena que conté un format ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Registre Llista delimitada per comes, entre { i }, de camps i els seus valors. Aquesta notació s'assembla a la dels registres de les aplicacions de llenç, però el nom sempre està entre cometes dobles. Aquest format no admet registres basats en relacions de diversos a un. { "First Name": "Fred", "Age": 21 }
Table Llista delimitada per comes, entre [ i ], de registres. Aquest format no admet taules basades en relacions d'un a diversos. Utilitzeu l'opció JSONFormat.FlattenValueTables per suprimir el registre de taules d'una sola columna amb la columna anomenada Valor. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dues opcions Valor booleà de dues opcions, true o false, no l'etiqueta que s'utilitza per a la visualització. El valor booleà s'utilitza perquè és independent de la llengua. false
Enllaç, Text Cadena entre cometes dobles. La funció escapa cometes dobles incrustades amb una barra inversa, substitueix els salts de línia per "\n" i fa altres substitucions estàndard del JavaScript. "This is a string."

Especifiqueu l'argument Format opcional per controlar el nivell de lectura del resultat i com es gestionen els tipus de dades no admesos i binaris. Per defecte, la sortida és la més compacta possible, sense espais ni salts de línia, i no es permeten els tipus de dades no admesos ni les dades binàries. Podeu combinar diversos formats si especifiqueu el & operador.

JSONFormat enum Descripció
JSONFormat.Compact Per defecte. La sortida és la més compacta possible sense espais afegits ni salts de línia.
JSONFormat.FlattenValueTables Com a taula de valors, [1,2,3] la notació resulta en una taula que conté registres on cada registre té una única columna Valor . En JSON, aquesta mateixa notació representa una matriu de tres nombres. Per facilitar la interoperabilitat entre els dos, aquesta opció aplana una Power Fx taula de valors a una matriu amigable JSON en lloc d'una matriu de registres.
JSONFormat.IndentFour Per millorar la capacitat de lectura, la sortida conté un salt de línia per a cada columna i nivell d'incrustació i utilitza quatre espais per a cada nivell de sagnat.
JSONFormat.IncludeBinaryData El resultat inclou columnes d'imatge, vídeo i clip d'àudio. Aquest format pot augmentar dràsticament la mida d'un resultat i degradar el rendiment de l'aplicació.
JSONFormat.IgnoreBinaryData El resultat no inclou columnes d'imatge, vídeo o clip d'àudio. Si no especifiqueu ni JSONFormat.IncludeBinaryData ni JSONFormat.IgnoreBinaryData, la funció produeix un error si troba dades binàries.
JSONFormat.IgnoreUnsupportedTypes Els tipus de dades no admesos no s'admeten, però el resultat no els inclourà. Per defecte, els tipus de dades no admesos produeixen un error.

Utilitzeu les funcions ShowColumns i DropColumns per controlar les dades que inclou el resultat i suprimir els tipus de dades no admesos.

Com que el JSON pot ser intensiu de memòria i càlcul, només podeu utilitzar aquesta funció en funcions de comportament. Podeu capturar el resultat del JSON en una variable, que després podeu utilitzar al flux de dades.

Si una columna té tant un nom de visualització com un nom lògic, el resultat conté el nom lògic. Els noms de visualització reflecteixen la llengua de l'usuari de l'aplicació i, per tant, són inapropiats per a la transferència de dades a un servei comú.

Sintaxi

JSON(DataStructure, [Format])

  • DataStructure: obligatori. L'estructura de dades que es convertirà al JSON. Les taules, els registres i els valors primitius s'admeten, incrustats arbitràriament.
  • Format: opcional. Valor JSONFormat enum. El valor per defecte és JSONFormat.Compact, que no afegeix línies noves ni espais i bloqueja les dades binàries i les columnes no admeses.

Exemples

Dades jeràrquiques

  1. Inseriu un control Botó i definiu-ne la propietat OnSelect a aquesta fórmula.

    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. Seleccioneu el botó mentre manteniu premuda la tecla Alt.

    La col·lecció CitiesByCountry es crea amb aquesta estructura de dades, que podeu mostrar en seleccionar Col·leccions al menú Fitxer i, a continuació, seleccionar el nom de la col·lecció.

    Col·lecció CitiesByCountry.

    També podeu mostrar aquesta col·lecció seleccionant Configuració>Pròximes característiques>Habilita la visualització de resultats de la barra de fórmules, seleccionant el nom de la col·lecció a la barra de fórmules i seleccionant la fletxa avall al costat del nom de la col·lecció sota la barra de fórmules.

    Col·lecció a la vista de resultats de la barra de fórmules.

  3. Inseriu un altre botó i definiu-ne la propietat OnSelect a aquesta fórmula:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Aquesta fórmula defineix la variable global CitiesByCountryJSON a la representació JSON per a CitiesByCountry.

  4. Seleccioneu el botó mentre manteniu premuda la tecla Alt.

  5. Inseriu un control Etiqueta i definiu-ne la propietat Text en aquesta variable.

    CitiesByCountryJSON
    

    L'etiqueta mostra aquest resultat, tot en una sola línia sense espais, apte per a la transmissió a través d'una xarxa:

    [
      {
        "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. Canvieu la fórmula del segon botó per fer que la sortida sigui més llegible.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Seleccioneu el segon botó mentre manteniu premuda la tecla Alt.

    L'etiqueta mostra el resultat més llegible.

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

Imatges i elements multimèdia en base64

  1. Afegeix un control Imatge.

    Aquest control porta SampleImage.

  2. Afegiu un control Botó i definiu-ne la propietat OnSelect a aquesta fórmula.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Seleccioneu el botó mentre manteniu premuda la tecla Alt.

  4. Afegiu una etiqueta i definiu-ne la propietat Text en aquesta variable.

    ImageJSON
    
  5. Canvieu la mida del control i reduïu la mida del tipus de lletra com calgui per mostrar la majoria del resultat.

    L'etiqueta mostra la cadena de text que ha capturat la funció JSON.

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

Taules de valors

Aquesta fórmula:

JSON( [1,2,3] )

Produeix la cadena de text[{"Valor":1},{"Valor":2},{"Valor":3}].

La mateixa fórmula amb l'opció JSONFormat.FlattenValueTables:

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

Produeix la cadena de text[1,2,3].

Tingueu en compte que l'opció FlattenValueTables no té cap impacte quan s'utilitza JSON amb les col·leccions CityPopulations o CitiesByCountry , ja que aquestes taules no són taules de valors. Una taula de valors té una sola columna i s'ha d'anomenar "Valor".