Fonction JSON
S’applique à : Applications canevas Applications pilotées par modèle Power Pages
Génère une chaîne de texte JSON pour une table, un enregistrement ou une valeur.
Description
La fonction JSON renvoie la représentation JSON (JavaScript Object Notation) d’une structure de données sous forme de texte afin qu’elle soit adaptée au stockage ou à la transmission sur un réseau. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf et IETF RFC 8259 décrivent le format, qui est largement utilisé par JavaScript et d’autres langages de programmation.
Les applications canevas prennent en charge les types de données que cette table répertorie avec des détails sur leur représentation textuelle :
Type de données | Description | Exemple de résultat |
---|---|---|
booléen | vrai ou faux. | true |
Couleur | Chaîne contenant la représentation hexadécimale à 8 chiffres de la couleur. Cette représentation prend le format #rrggbbaa, où rr est la composante rouge, gg est le vert, bb est le bleu, et aa est le canal alpha. Pour le canal alpha, 00 est entièrement transparent, et ff est entièrement opaque. Vous pouvez transmettre la chaîne à la fonction ColorValue. | "#102030ff" |
Devise | Nombre qui utilise le séparateur décimal approprié pour la langue de l’utilisateur. La notation scientifique est utilisée si nécessaire. | 1.345 |
Date | Chaîne contenant la date dans le format ISO 8601 aaaa-mm-jj. | "2019-03-31" |
DateHeure | Chaîne contenant une date/heure ISO 8601. Les valeurs de date/heure sont en UTC, comme l’indique la fin « Z ». | "2019-03-31T22:32:06.822Z" |
GUID | Chaîne contenant la valeur GUID. Les lettres sont des minuscules. | "751b58ac-380e-4a04-a925-9f375995cc40" |
Image, Médias | Si JSONFormat.IncludeBinaryData est spécifié, les fichiers multimédias sont codés dans une chaîne. Les références Web qui utilisent le schéma d’URL http: ou https: ne sont pas modifiées. Les références aux données binaires en mémoire sont codées avec le format "data:mimetype;base64,...". Les données en mémoire incluent des images que les utilisateurs capturent en utilisant le contrôle Camera et toute autre référence aux schémas d’URL appres: et blob:. | "data:image/jpeg;base64,/9j/4AA..." |
Nombre | Nombre qui utilise le séparateur décimal approprié pour la langue de l’utilisateur. La notation scientifique est utilisée si nécessaire. | 1.345 |
groupe d’options | Valeur numérique du choix, pas l’étiquette utilisée pour l’affichage. La valeur numérique est utilisée car elle est indépendante de la langue. | 1001 |
Temps | Chaîne contenant un format ISO 8601 hh:mm:ss.fff. | "23:12:49.000" |
Enregistrer | Liste délimitée par des virgules, entre { et }, des champs et de leurs valeurs. Cette notation ressemble à celle des enregistrements dans les applications de canevas, mais le nom est toujours entre guillemets doubles. Ce format ne prend pas en charge les enregistrements basés sur des relations plusieurs à un. | { "First Name": "Fred", "Age": 21 } |
Table | Liste délimitée par des virgules, entre [ et ], des enregistrements. Ce format ne prend pas en charge les tables basées sur des relations une à plusieurs. Utilisez l’option JSONFormat.FlattenValueTables pour supprimer l’enregistrement pour les tables à colonne unique avec la colonne nommée Valeur. | [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] |
Deux options | Valeur booléenne des deux options, true ou false, pas l’étiquette utilisée pour l’affichage. La valeur booléenne est utilisée car elle est indépendante de la langue. | false |
Hyperlien, texte | Chaîne entre guillemets doubles. La fonction échappe les guillemets intégrés avec une barre oblique inverse, remplace les sauts de ligne par « \n », et effectue d’autres remplacements JavaScript standard. | "This is a string." |
Spécifiez l’argument Format facultatif pour contrôler la lisibilité du résultat et la manière dont les types de données non pris en charge et binaires sont traités. Par défaut, la sortie est aussi compacte que possible, sans espaces ni sauts de ligne inutiles, et les types de données et les données binaires non pris en charge ne sont pas autorisés. Vous pouvez combiner plusieurs formats si vous spécifiez l’opérateur &.
Énum JSONFormat | Description |
---|---|
Format JSON.Compact | Par défaut. La sortie est aussi compacte que possible sans espaces ajoutés ni nouvelles lignes. |
Format JSON.FlattenValueTables | En tant que table de valeur, la notation [1,2,3] génère une table contenant des enregistrements où chaque enregistrement a une seule colonne Valeur. Dans JSON, cette même notation représente un tableau de trois nombres. Pour faciliter l’interopérabilité entre les deux, cette option aplatit une table de valeur Power Fx en tableau compatible JSON au lieu d’un tableau d’enregistrements. |
JSONFormat.IndentFour | Pour améliorer la lisibilité, la sortie contient une nouvelle ligne pour chaque colonne et niveau d’imbrication et utilise quatre espaces pour chaque niveau d’indentation. |
JSONFormat.IncludeBinaryData | Le résultat comprend des colonnes d’images, de vidéos et de clips audio. Ce format peut considérablement augmenter la taille du résultat et dégrader les performances de votre application. |
JSONFormat.IgnoreBinaryData | Le résultat ne comprend pas de colonnes d’images, de vidéos ou de clips audio. Si vous ne spécifiez ni JSONFormat.IncludeBinaryData, ni JSONFormat.IgnoreBinaryData, la fonction produit une erreur si elle rencontre des données binaires. |
Format JSON.Ignorer les types non pris en charge | Les types de données non pris en charge sont autorisés, mais le résultat ne les inclura pas. Par défaut, les types de données non pris en charge génèrent une erreur. |
Utilisez les fonctions ShowColumns et DropColumns pour contrôler les données incluses dans le résultat et pour supprimer les types de données non pris en charge.
Parce que JSON peut consommer beaucoup de mémoire et effectuer de nombreux calculs, vous ne pouvez utiliser cette fonction que dans les fonctions de comportement. Vous pouvez capturer le résultat de JSON dans une variable, que vous pouvez ensuite utiliser dans le flux de données.
Si une colonne a à la fois un nom complet et un nom logique, le résultat contient le nom logique. Les noms affichés reflètent la langue de l’utilisateur de l’application et sont donc inappropriés pour le transfert de données vers un service commun.
Syntaxe
JSON( Structure de données [, Format ] )
- DataStructure – Obligatoire. La structure de données à convertir en JSON. Les tables, les enregistrements et les valeurs primitives sont pris en charge, imbriqués arbitrairement.
- Format - Facultatif. JSONFormat enum valeur. La valeur par défaut est JSONFormat.Compact, qui n’ajoute pas de nouvelles lignes ou d’espaces et bloque les données binaires et les colonnes non prises en charge.
Exemples
Données hiérarchiques
Insérez un contrôle Button, puis définissez sa propriété OnSelect sur la formule suivante.
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" ) )
Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.
La collection CitiesByCountry est créée avec cette structure de données, que vous pouvez afficher en sélectionnant Collections sur le menu Fichier, puis sélectionnez le nom de la collection.
Vous pouvez également afficher cette collection en sélectionnant Paramètres>Fonctionnalités à venir>Activer la vue des résultats de la barre de formule, en sélectionnant le nom de la collection dans la barre de formules, puis en sélectionnant la flèche vers le bas en regard du nom de la collection sous la barre de formules.
Insérez un autre bouton, puis définissez sa propriété OnSelect sur la formule suivante :
Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
Cette formule définit la variable globale CitiesByCountryJSON sur la représentation JSON pour CitiesByCountry.
Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.
Insérez un contrôle Label et définissez sa propriété Text sur cette variable.
CitiesByCountryJSON
L’étiquette montre ce résultat, le tout sur une seule ligne sans espaces, adapté à la transmission sur un réseau :
[ { "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" } ]
Modifiez la formule du deuxième bouton pour rendre la sortie plus lisible.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
Cliquez sur le second bouton tout en maintenant la touche Alt enfoncée.
L’étiquette montre le résultat le plus lisible.
[ { "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" } ]
Images et médias en base64
Ajouter un contrôle Image.
Ce contrôle apporte SampleImage avec ça.
Ajoutez un contrôle Button, puis définissez sa propriété OnSelect sur cette formule.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.
Ajoutez une étiquette et affectez à sa propriété Text cette variable.
ImageJSON
Redimensionnez le contrôle et réduisez la taille de la police selon vos besoins pour afficher la plupart du résultat.
L’étiquette montre la chaîne de texte que la fonction JSON capturée.
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
Tables de valeurs
Cette formule :
JSON( [1,2,3] )
produit la chaîne de texte [{"Value":1},{"Value":2},{"Valeur":3}].
La même formule avec l’option JSONFormat.FlattenValueTables :
JSON( [1,2,3], JSONFormat.FlattenValueTables )
produit la chaîne de texte [1,2,3].
Notez que l’option FlattenValueTables n’a aucun impact lors de l’utilisation de JSON avec les collections CityPopulations ou CitiesByCountry, car ces tables ne sont pas des tables de valeur. Une table de valeur comporte une seule colonne et elle doit être nommée « Valeur ».