Funzione JSON

Si applica a: App canvas App basate su modello

Genera una stringa di testo JSON per una tabella, un record o un valore.

Descrizione

La funzione JSON restituisce la rappresentazione JavaScript Object Notation (JSON) di una struttura di dati come testo di modo che sia adatta per l'archiviazione o la trasmissione attraverso una rete. ECMA-404 e IETF RFC 8259 descrivono il formato, che è ampiamente utilizzato da JavaScript e da altri linguaggi di programmazione.

Le app canvas supportano il tipi di dati che questa tabella elenca con dettagli sulla relativa rappresentazione testuale:

Tipo di dati Descrizione Esempio di risultato
Booleano true o false. true
Colore Stringa che contiene la rappresentazione esadecimale di 8 cifre per il colore. Questa rappresentazione assume il formato #rrggbbaa, dove rr è il componente rosso, gg è quello verde, bb è quello blu e aa è il canale alfa. Per il canale alfa, 00 è completamente trasparente e ff è completamente opaco. È possibile passare la stringa alla funzione ColorValue. "#102030ff"
Valuta Numero che utilizza il separatore decimale appropriato per la lingua dell'utente. La notazione scientifica viene utilizzata se necessario. 1.345
Data Stringa che contiene la data nel formato ISO 8601 aaaa-mm-gg. "2019-03-31"
DateTime Stringa che contiene una data/ora ISO 8601. I valori di data/ora sono in UTC, come indica la "Z" finale. "2019-03-31T22:32:06.822Z"
GUID Stringa che contiene il valore GUID. Le lettere sono minuscole. "751b58ac-380e-4a04-a925-9f375995cc40"
Immagine, file multimediali Se JSONFormat.IncludeBinaryData è specificato, i file multimediali sono codificati in una stringa. I riferimenti Web che utilizzano lo schema di URL http: o https: non vengono modificati. I riferimenti ai dati binari in memoria sono codificati con il formato "data:mimetype;base64,...". I dati in memoria includono immagini che gli utenti acquisiscono utilizzando il controllo Camera e qualsiasi altro riferimento con gli schemi URL appres: e blob:. "data:image/jpeg;base64,/9j/4AA..."
Numero Numero che utilizza il separatore decimale appropriato per la lingua dell'utente. La notazione scientifica viene utilizzata se necessario. 1.345
Option set Valore numerico della scelta, non l'etichetta utilizzata per la visualizzazione. Il valore numerico viene utilizzato perché è indipendente dalla lingua. 1001
Ora Stringa che contiene un formato ISO 8601 hh: mm:ss.fff. "23:12:49.000"
Record Elenco delimitato da virgole, tra { e }, dei campi e dei relativi valori. Questa notazione è simile a quella per i record nelle app canvas, ma il nome è sempre tra virgolette doppie. Questo formato non supporta i record basati su relazioni molti-a-uno. { "First Name": "Fred", "Age": 21 }
Table Elenco delimitato da virgole, tra [ e ], di record. Questo formato non supporta le tabelle basate su relazioni uno-a-molti. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Two option Valore booleano delle due opzioni, true o false, non l'etichetta utilizzata per la visualizzazione. Il valore booleano viene utilizzato perché è indipendente dalla lingua. false
Collegamento ipertestuale, testo Stringa tra virgolette doppie. La funzione elimina le virgolette doppie incorporate con una barra rovesciata, sostituisce le nuove righe con "\n" e apporta altri sostituti JavaScript standard. "This is a string."

Specificare l'argomento Format facoltativo per controllare la leggibilità del risultato e la gestione dei tipi di dati binari e non supportati. Per impostazione predefinita, l'output è il più compatto possibile senza spazi o nuove righe non necessari e i tipi di dati e i dati binari non supportati non sono consentiti. È possibile combinare più formati se si specifica l'operatore &.

Enumerazione JSONFormat Descrzione
JSONFormat.Compact Valore predefinito. L'output è il più compatto possibile senza spazi aggiuntivi o nuove righe.
JSONFormat.IndentFour Per migliorare la leggibilità, l'output contiene una nuova riga per ogni colonna e livello di nidificazione e utilizza quattro spazi per ciascun livello di rientro.
JSONFormat.IncludeBinaryData Il risultato include colonne di immagini, video e clip audio. Questo formato può aumentare notevolmente le dimensioni del risultato e peggiorare le prestazioni della app.
JSONFormat.IgnoreBinaryData Il risultato non include colonne di immagini, video o clip audio. Se non si specifica JSONFormat.IncludeBinaryData o JSONFormat.IgnoreBinaryData, la funzione produce un errore se rileva dati binari.
JSONFormat.IgnoreUnsupportedTypes Sono consentiti tipi di dati non supportati, ma il risultato non li includerà. Per impostazione predefinita, i tipi di dati non supportati producono un errore.

Utilizza il ShowColumns e DropColumns per controllare quali dati include il risultato e per rimuovere i tipi di dati non supportati.

Poché JSON può comportare un uso intensivo di memoria e risorse, è possibile utilizzare questa funzione solo in funzioni comportamentali. È possibile acquisire il risultato da JSON in una variabile, che è quindi possibile utilizzare nel flusso di dati.

Se una colonna ha sia nome visualizzato, sia un nome logico, il risultato contiene il nome logico. I nomi visualizzati riflettono la lingua dell'utente dell'app e sono quindi inappropriati per il trasferimento dei dati a un servizio comune.

Sintassi

JSON( DataStructure [, Format ] )

  • DataStructure: obbligatorio. La struttura dati da convertire in JSON. Tabelle, record e valori primitivi sono supportati, nidificati arbitrariamente.
  • Format: facoltativo. Valore di enumerazione JSONFormat. Il valore predefinito è JSONFormat.Compact, che non aggiunge nuove righe o spazi e blocca i dati binari e le colonne non supportate.

Esempi

Dati gerarchici

  1. Inserire un controllo Button e impostare la relativa proprietà OnSelect su questa formula.

    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. Selezionare il pulsante tenendo premuto ALT.

    La raccolta CitiesByCountry viene creata con questa struttura dati, che è possibile mostrare selezionando Raccolte nel menu File e quindi il nome della raccolta.

    Raccolta CitiesByCountry.

    Puoi anche mostrare questa raccolta selezionando Impostazioni>Funzionalità in arrivo>Abilita la visualizzazione dei risultati della barra della formula, selezionando il nome della raccolta nella barra della formula e quindi selezionando la freccia giù accanto al nome della raccolta sotto la barra della formula.

    Raccolta nella visualizzazione dei risultati della barra della formula.

  3. Inserire un altro pulsante e impostare la relativa proprietà OnSelect su questa formula:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Questa formula imposta la variabile globale CitiesByCountryJSON sulla rappresentazione JSON per CitiesByCountry.

  4. Selezionare il pulsante tenendo premuto ALT.

  5. Inserire un controllo Label e impostare la relativa proprietà Text su questa variabile.

    CitiesByCountryJSON
    

    L'etichetta mostra questo risultato, tutto su una sola riga senza spazi, adatto per la trasmissione attraverso una rete:

    [
      {
        "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. Modificare la formula del secondo pulsante per rendere più leggibile l'output.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Selezionare il secondo pulsante tenendo premuto il tasto ALT.

    L'etichetta mostra il risultato più leggibile.

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

Immagini e contenuti multimediali in base64

  1. Aggiungi un controllo Image.

    Questo controllo include sampleImage.

  2. Aggiungere un controllo Button e impostare la relativa proprietà OnSelect su questa formula.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Selezionare il pulsante tenendo premuto ALT.

  4. Aggiungere un'etichetta e impostare la relativa proprietà Text su questa variabile.

    ImageJSON
    
  5. Ridimensionare il controllo e ridurre le dimensioni del carattere come necessario per mostrare la maggior parte del risultato.

    L'etichetta mostra la stringa di testo acquisita dalla funzione JSON.

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