Compartilhar via


JSON Função

Aplica-se a: Aplicativos de tela Copilot Studio Aplicativos baseados em modelo Power Platform CLI Dataverse funções Power Pages

Gera uma JSON cadeia de caracteres de texto para uma tabela, um registro ou um valor.

Descrição

A JSON função retorna a representação de JavaScript Object Notation (JSON) de uma estrutura de dados como texto para que seja adequada para armazenar ou transmitir em uma rede. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf e IETF RFC 8259 descrevem o formato, que é muito usado por JavaScript e outras linguagens de programação.

Os aplicativos de tela suportam os tipos de dados que esta tabela lista com detalhes sobre sua representação de texto:

Tipo de dados Descrição Exemplo de resultado
Booliano verdadeiro ou falso. true
Cor Cadeia de caracteres que contém a representação hexadecimal de 8 dígitos para a cor. Essa representação assume o formato #rrggbbaa, onde rr é o componente vermelho, gg é verde, bb é azul e aa é o canal alfa. Para o canal alfa, 00 é totalmente transparente e ff é totalmente opaco. Você pode passar a cadeia de caracteres para a função ColorValue. "#102030ff"
Moeda Número que usa o separador decimal apropriado para o idioma do usuário. A notação científica é usada, se necessário. 1.345
Data Cadeia de caracteres que contém a data no formato aaaa-mm-dd ISO 8601. "2019-03-31"
DateTime Cadeia de caracteres que contém uma data/hora ISO 8601. Os valores de data/hora estão em UTC, como indica o "Z" final. "2019-03-31T22:32:06.822Z"
GUID Cadeira de caracteres que contém o valor GUID. As letras são minúsculas. "751b58ac-380e-4a04-a925-9f375995cc40"
Imagem, Mídia Se JSONFormat.IncludeBinaryData for especificado, os arquivos de mídia serão codificados em uma cadeia de caracteres. As referências da Web que usam o esquema de URL http: ou https: não são modificadas. As referências a dados binários na memória são codificadas com o formato "data:mimetype;base64,...". Os dados na memória incluem imagens que os usuários capturam usando o controle Camera e outras referências com os esquemas appres: e blob: URL. "data:image/jpeg;base64,/9j/4AA..."
Número Número que usa o separador decimal apropriado para o idioma do usuário. A notação científica é usada, se necessário. 1.345
conjunto de opções Valor numérico da opção, não o rótulo usado para exibição. O valor numérico é usado porque é independente do idioma. 1001
Time Cadeia de caracteres que contém um formato hh:mm:ss.fff ISO 8601. "23:12:49.000"
Registro Lista delimitada por vírgula, entre { e }, de campos e seus valores. Essa notação se assemelha à dos registros nos aplicativos de tela, mas o nome está sempre entre aspas duplas. Este formato não suporta registros baseados em relacionamentos muitos para um. { "First Name": "Fred", "Age": 21 }
Tabela Lista delimitada por vírgula, entre [e], de registros. Este formato não suporta tabelas baseadas em relacionamentos um para muitos. Use a opção JSONFormat.FlattenValueTables para remover o registro das tabelas de coluna única com a coluna chamada Valor. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Duas opções Valor booleano das duas opções, true ou false, não o rótulo usado para exibição. O valor booliano é usado porque é independente do idioma. false
Hiperlink, Texto Cadeia de caracteres entre aspas duplas. A função escapa das marcas de aspas duplas incorporadas com uma barra invertida, substitui novas linhas por "\n" e faz outras substituições padrão do JavaScript. "This is a string."

Especifique o controle Format opcional para controlar o quão legível é o resultado e como os tipos de dados binários e não suportados são tratados. Por padrão, a saída é o mais compacta possível, sem espaços desnecessários ou novas linhas, e tipos de dados não suportados e dados binários não são permitidos. Você pode combinar vários formatos se especificar o operador &.

Enumeração JSONFormat Descrição
Formato JSON.Compact Padrão. A saída é o mais compacta possível, sem espaços adicionais ou novas linhas.
JSONFormat.Tabelas de valores achatados Como uma tabela Valor, a notação [1,2,3] acarreta uma tabela contendo registros nos quais cada registro tem uma única coluna Valor. Em JSON, essa mesma notação representa uma matriz de três números. Para facilitar a interoperabilidade entre os dois, essa opção mescla uma tabela power fx value a uma JSON matriz amigável em vez de uma matriz de registros.
JSONFormat.RecuoQuatro Para melhorar a legibilidade, a saída contém uma nova linha para cada coluna e nível de aninhamento e usa quatro espaços para cada nível de indentação.
JSONFormat.IncludeBinaryData O resultado inclui colunas de imagem, vídeo e clipe de áudio. Esse formato pode aumentar drasticamente o tamanho do resultado e prejudicar o desempenho do seu aplicativo.
JSONFormat.IgnorarDadosBinários O resultado não inclui colunas de imagem, vídeo ou clipe de áudio. Se você não especificar JSONFormat.IncludeBinaryData nem JSONFormat.IgnoreBinaryData, a função produz um erro se encontrar dados binários.
JSONFormat.IgnoreTiposNãoSuportados Tipos de dados não suportados são permitidos, mas o resultado não os incluirá. Por padrão, os tipos de dados não suportados produzem um erro.

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

Como JSON a memória e a computação são intensivas, você pode usar essa função apenas em funções de comportamento. Você pode capturar o resultado de JSON uma variável, que pode ser usada no fluxo de dados.

Se uma coluna tiver um nome para exibição e um nome lógico, o resultado conterá o nome lógico. Os nomes de exibição refletem o idioma do usuário do aplicativo e, portanto, são inadequados para a transferência de dados de um serviço comum.

Sintaxe

JSON( DataStructure [, Format ] )

  • DataStructure – Obrigatório. A estrutura de dados a JSONser convertida em . Tabelas, registros e valores primitivos são suportados, aninhados arbitrariamente.
  • Formato - Opcional. Valor JSONFormat enumeração. O valor padrão é JSONFormat.Compact, que não adiciona novas linhas ou espaços e bloqueia dados binários e colunas não suportadas.

Exemplos

Dados hierárquicos

  1. Insira um controle Button e defina sua 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 pressionado a tecla Alt.

    A coleção CitiesByCountry é criada com essa estrutura de dados, que você pode mostrar selecionando Coleções no menu Arquivo e, em seguida, selecionando o nome da coleção.

    Coleção CitiesByCountry.

    Você também pode mostrar esta coleção selecionando Configurações>Recursos futuros>Habilitar exibição de resultados da barra de fórmulas, selecionando o nome da coleção na barra de fórmulas e, em seguida, selecionando a seta para baixo ao lado do nome da coleção na barra de fórmulas.

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

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

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Essa fórmula define a variável global CitiesByCountryJSON como a JSON representação de CitiesByCountry.

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

  5. Insira um controle Label e defina a propriedade Text com essa variável.

    CitiesByCountryJSON
    

    O rótulo mostra esse resultado, tudo em uma única linha sem espaços, adequado para transmissão em 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 pressionado a tecla Alt.

    O rótulo 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 mídia em base64

  1. Adicione um controle Image.

    Esse controle traz SampleImage com isso.

  2. Adicione um controle Button e defina sua propriedade OnSelect para esta fórmula.

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

  4. Adicione um rótulo e defina sua propriedade Text como esta variável.

    ImageJSON
    
  5. Redimensione o controle e reduza o tamanho da fonte conforme necessário para mostrar a maior parte do resultado.

    O rótulo mostra a cadeia de caracteres de texto que a JSON função capturou.

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

Tabelas de valores

Esta fórmula:

JSON( [1,2,3] )

produz a cadeia de caracteres de texto [{"Valor":1},{"Valor":2},{"Valor":3}].

A mesma fórmula com a opção JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

produz a cadeia de caracteres de texto [1,2,3].

Observe que a opção FlattenValueTables não tem impacto ao usar JSON com as coleções CityPopulations ou CitiesByCountry , pois essas tabelas não são tabelas value. Uma tabela Valor tem uma única coluna e deve ser chamada de "Valor".