Fonction JSON

S’applique à : Applications canevas Applications pilotées par modèle

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 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 true ou false. 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"
Date/Heure 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, Media 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..."
Numéro 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
Jeu 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
Durée Chaîne contenant un format ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Enregistrement 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. [ { "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
Hyperlink, Text 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
JSONFormat.Compact Par défaut. La sortie est aussi compacte que possible sans espaces ajoutés ni nouvelles lignes.
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.
JSONFormat.IgnoreUnsupportedTypes 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( DataStructure [, 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. Valeur énum JSONFormat. 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

  1. 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" ) )
    
  2. 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.

    CitiesByCountry 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.

    Collection dans la vue des résultats de la barre de formule.

  3. 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.

  4. Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.

  5. 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"
      }
    ]
    
  6. Modifiez la formule du deuxième bouton pour rendre la sortie plus lisible.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. 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

  1. Ajouter un contrôle Image.

    Ce contrôle apporte SampleImage avec ça.

  2. Ajoutez un contrôle Button, puis définissez sa propriété OnSelect sur cette formule.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.

  4. Ajoutez une étiquette et affectez à sa propriété Text cette variable.

    ImageJSON
    
  5. 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+"