Função JSON no Power Apps

Gera uma cadeia de texto JSON para uma tabela, registo ou valor.

Descrição

A função JSON devolve a representação JavaScript Object Notation (JSON) de uma estrutura de dados como texto, para que seja adequado para armazenar ou transmitir através de uma rede. ECMA-404 e IETF RFC 8259 descrevem o formato, que é amplamente utilizado por JavaScript e outras linguagens de programação.

As aplicações de tela suportam os tipos de dados que esta tabela lista com os detalhes sobre a respetiva representação de texto:

Tipo de dados Descrição Exemplo de resultado
Booleano true ou false. true
Cor Cadeia que contém a representação hexadecimal de 8 dígitos para a cor. Esta representação utiliza o formato #rrggbbaa, em que rr é o componente vermelho, gg é verde, bb é azul e aa é o canal alfa. Para o canal alfa, 00 é totalmente transparente e ff é totalmente opaco. Pode passar a cadeia para a função ColorValue. "#102030ff"
Moeda Número que utiliza o separador decimal adequado para o idioma do utilizador. Se for necessário, é utilizada a notação científica. 1.345
Date Cadeia que contém a data no formato ISO 8601 aaa-mm-dd. "2019-03-31"
DateTime Cadeia que contém uma data/hora ISO 8601. Os valores de data/hora estão em UTC, como o "Z" final indica. "2019-03-31T22:32:06.822Z"
GUID Cadeia que contém o valor GUID. As letras estão em minúsculas. "751b58ac-380e-4a04-a925-9f375995cc40"
Imagem, Suporte Se for especificado IncludeBinaryData, os ficheiros multimédia são codificados numa cadeia. As referências Web que utilizam o esquema http: ou https: URL não são modificadas. As referências aos dados binários na memória são codificadas com o formato "data:mimetype;base64,...". Os dados na memória incluem as imagens que os utilizadores capturam através do controlo Camera e quaisquer outras referências com os esquemas appres: e blob: URL. "data:image/jpeg;base64,/9j/4AA..."
Número Número que utiliza o separador decimal adequado para o idioma do utilizador. Se for necessário, é utilizada a notação científica. 1.345
Conjunto de opções Valor numérico do conjunto de opções, não a etiqueta que é utilizada para apresentação. O valor numérico é utilizado porque é independente da linguagem. 1001
Time Cadeia que contém um formato hh:mm:ss.fff ISO 8601. "23:12:49.000"
Registo Lista delimitada por vírgulas, entre { e }, dos campos e dos respetivos valores. Esta notação é semelhante à dos registos nas aplicações de tela, mas o nome está sempre entre aspas. Este formato não suporta registos baseados em relações de muitos para um. { "First Name": "Fred", "Age": 21 }
Table Lista delimitada por vírgulas, entre [ e ], de registos. Este formato não suporta tabelas baseados em relações de um para muitos. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Opção dois Valor booleano da opção dois, true ou false, não a etiqueta que é utilizada para apresentação. O valor Booleano é utilizado porque é independente da linguagem. false
Hiperligação, Texto Cadeia entre aspas. A função coloca um carácter de escape nas as aspas incorporadas com uma barra invertida, substitui as novas linhas por "\n" e faz outras substituições de JavaScript padrão. "This is a string."

Especifique o argumento opcional Formato para controlar a legibilidade do resultado e como são tratados os tipos de dados não suportados e binários. Por predefinição, a saída é o mais compacta possível sem novas linhas ou espaços desnecessários, e não são permitidos dados binários e tipos de dados não suportados. Pode combinar vários formatos se especificar o operador &.

Enumeração JSONFormat Descrição
Compacto Predefinição. A saída é o mais compacta possível sem novas linhas ou espaços adicionados.
IndentFour Para melhorar a legibilidade, a saída contém uma nova linha para cada coluna e nível de encadeamento, e utiliza quatro espaços para cada nível de avanço.
IncludeBinaryData O resultado inclui colunas de imagem, vídeo e clip de áudio. Este formato pode aumentar drasticamente o tamanho do resultado e degradar o desempenho da sua aplicação.
IgnoreBinaryData O resultado não inclui colunas de imagem, vídeo ou clip de áudio. Se não especificar IncludeBinaryData nem IgnoreBinaryData, a função produz um erro se encontrar dados binários.
IgnoreUnsupportedTypes São permitidos tipos de dados não suportados, mas o resultado não os incluirá. Por predefinição, os tipos de dados não suportados produzem um erro.

Utilize as funções ShowColumns e DropColumns para controlar que dados o resultado inclui e para remover tipos de dados não suportados.

Como JSON pode fazer uma utilização intensiva da memória e da computação, só pode utilizar esta função em funções de comportamento. Pode capturar o resultado de JSON numa variável, que pode depois utilizar no fluxo de dados.

Se uma coluna tiver um nome a apresentar e um nome lógico, o resultado contém o nome lógico. Os nomes a apresentar refletem a linguagem do utilizador da aplicação e, consequentemente, são inadequados para a transferência de dados para um serviço comum.

Sintaxe

JSON( DataStructure [, Format ] )

  • DataStructure – obrigatório. A estrutura de dados a converter para JSON. São suportados registos, tabelas e valores primitivos, encadeados arbitrariamente.
  • Format - opcional. Valor de enumeração JSONFormat. O valor predefinido é Compact, que não adiciona novas linhas ou espaços, e bloqueia os dados binários e as colunas não suportadas.

Exemplos

Dados hierárquicos

  1. Insira um controlo Button e defina a respetiva propriedade OnSelect para esta 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. Selecione o botão enquanto mantém premida a tecla Alt.

    A coleção CitiesByCountry é criada com esta estrutura de dados, que pode mostrar ao selecionar Coleções no menu Ficheiro e, em seguida, selecionar o nome da coleção.

    Coleção CitiesByCountry

    Também pode mostrar esta coleção ao selecionar Ficheiro > Definições da aplicação > Definições avançadas > Ativar vista de resultados da barra de fórmulas, selecionar o nome da coleção na barra de fórmulas e, em seguida, selecionar a seta para baixo junto ao nome da coleção sob a barra de fórmulas.

    Coleção na vista de resultados da barra de fórmulas

  3. Insira outro botão e defina a respetiva propriedade OnSelect para esta fórmula:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Esta fórmula define a variável global CitiesByCountryJSON para a representação JSON para CitiesByCountry.

  4. Selecione o botão enquanto mantém premida a tecla Alt.

  5. Insira um controlo Label e defina a respetiva propriedade Text para esta variável:

    CitiesByCountryJSON
    

    A etiqueta mostra este resultado, tudo isto numa única linha sem espaços, adequada para transmissão através de uma rede:

    [{"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. Altere a fórmula do segundo botão para tornar a saída mais legível.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Selecione o segundo botão enquanto mantém premida a tecla Alt.

    A etiqueta mostra o resultado mais legível.

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

Imagens e multimédia base64

  1. Adicionar um controlo de Imagem.

    Este controlo traz SampleImage consigo.

  2. Adicione um controlo Botão e defina a respetiva propriedade OnSelect para esta fórmula.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Selecione o botão enquanto mantém premida a tecla Alt.

  4. Adicione uma etiqueta e defina a respetiva propriedade Text para esta variável.

    ImageJSON
    
  5. Redimensione o controlo e reduza o tamanho do tipo de letra conforme for necessário para mostrar a maior parte do resultado.

    A etiqueta mostra a cadeia de texto que a função JSON capturou.

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

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).