Funció JSON
S'aplica a: Aplicacions de llenç Aplicacions basades en models Power Pages
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 |
---|---|---|
Booleà | Cert o fals. | 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 |
Datar | Cadena que conté la data en format ISO 8601 aaaa-mm-dd. | "2019-03-31" |
DataHora | 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, Mitjans | 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" |
Rècord | 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 } |
Taula | 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 les 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 |
Hiperenllaç, 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 l'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ó dóna com a resultat una taula que conté registres on cada registre té una sola columna de valor . En JSON, aquesta mateixa notació representa una matriu de tres números. Per facilitar la interoperabilitat entre els dos, aquesta opció aplana una Power Fx taula de valors a una matriu compatible amb 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( Estructura de dades[, 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 d'enumeració JSONFormat . El valor per defecte és JSONFormat.Compact, que no afegeix noves línies ni espais i bloqueja dades binàries i columnes no admeses.
Exemples
Dades jeràrquiques
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" ) )
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ó.
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.
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.
Seleccioneu el botó mentre manteniu premuda la tecla Alt.
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" } ]
Canvieu la fórmula del segon botó per fer que la sortida sigui més llegible.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
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
Afegeix un control Imatge.
Aquest control porta SampleImage.
Afegiu un control Botó i definiu-ne la propietat OnSelect a aquesta fórmula.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Seleccioneu el botó mentre manteniu premuda la tecla Alt.
Afegiu una etiqueta i definiu-ne la propietat Text en aquesta variable.
ImageJSON
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[{"Value":1},{"Value":2},{"Value":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".