Compartir por


JSON Función

Aplícase a: Aplicacións de lenzo Copilot Studio Aplicacións baseadas en modelos Power Platform CLI Funcións de Dataverse Power Pages

Xera unha cadea de JSON texto para unha táboa, un rexistro ou un valor.

Descripción

A JSON función devolve a representación JavaScript Object Notation (JSON) dunha estrutura de datos como texto para que sexa axeitada para almacenar ou transmitir a través dunha rede. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf e IETF RFC 8259 descríbense o formato, que é moi utilizado por JavaScript e outras linguaxes de programación.

As aplicacións de lenzo admiten tipos de datos que esta táboa enumera con detalles sobre a súa representación de texto:

Tipo de datos Descripción Exemplo de resultado
Booleano verdadeiro ou falso. true
Cor Cadea que contén a representación hexadecimal de 8 díxitos para a cor. Esta representación leva o formato #rrggbbaa, onde rr é o compoñente vermello, gg é o verde, bb é o azul e aa é a canle alfa. Para a canle alfa, 00 é totalmente transparente e ff é totalmente opaco. Pode pasar a cadea á función ColorValue. "#102030ff"
Moeda Número que usa o separador decimal adecuado para o idioma do usuario. Se é necesario úsase unha notación científica. 1.345
Data Cadea que contén a data no formato ISO 8601 aaaa-mm-dd. "2019-03-31"
DataHora Cadea que contén unha data e hora ISO 8601. Os valores de data e hora están en UTC, como indica o "Z" final. "2019-03-31T22:32:06.822Z"
GUID Cadea que contén o valor GUID. As letras son minúsculas. "751b58ac-380e-4a04-a925-9f375995cc40"
Imaxe, Medios Se se especifica JSONFormat.IncludeBinaryData , os ficheiros multimedia codificaranse nunha cadea. As referencias web que usan o esquema URL http: ou https: non se modifican. As referencias a datos binarios na memoria codifícanse co formato "data:mimetype;base64,...". Os datos na memoria inclúen imaxes que os usuarios capturan usando o control de Cámara e calquera outra referencia cos esquemas de URL appres: e blob:. "data:image/jpeg;base64,/9j/4AA..."
Número Número que usa o separador decimal adecuado para o idioma do usuario. Se é necesario úsase unha notación científica. 1.345
conxunto de opcións Valor numérico da elección, non a etiqueta que se usa para mostrar. O valor numérico úsase porque é independente do idioma. 1001
Tempo Cadea que contén un formato de hh: mm:ss.fff ISO 8601. "23:12:49.000"
Gravar Lista delimitada por comas, entre {e}, de campos e os seus valores. Esta notación aseméllase á dos rexistros en aplicacións de lenzo, pero o nome sempre está entre comiñas dobres. Este formato non admite rexistros baseados en relacións de un a varios. { "First Name": "Fred", "Age": 21 }
Táboa Lista delimitada por comas entre [e], de rexistros. Este formato non admite táboas baseadas en relacións de un a varios. Use a opción JSONFormat.FlattenValueTables para eliminar o rexistro das táboas dunha soa columna coa columna chamada Valor. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dúas opcións Valor booleano das dúas opcións, verdadeiro ou falso, non a etiqueta que se usa para mostrar. O valor booleano úsase porque é independente do idioma. false
Hiperligazón, texto Cadea entre comiñas dobres. A función escapa as comiñas dobres incrustadas cunha barra invertida, substitúe as novas novas por "\n", e fai outras substitucións estándar de JavaScript. "This is a string."

Especifique o argumento opcional de Formato para controlar o lexible que é o resultado e como se xestionan os tipos de datos non compatibles e binarios. De xeito predeterminado, a saída é o máis compacta posible sen espazos innecesarios nin novas liñas, e non se admiten tipos de datos non compatibles e datos binarios. Podes combinar varios formatos se especificas o operador & .

Enumeración JSONFormat Descripción
JSONFormat.Compact Predefinido. A saída é o máis compacta posible sen espazos engadidos nin novas liñas.
JSONFormat.FlattenValueTables Como unha táboa de valores, a [1,2,3] notación dá como resultado unha táboa que contén rexistros onde cada rexistro ten un único Valor columna. En JSON, esta mesma notación representa un conxunto de tres números. Para facilitar a interoperabilidade entre os dous, esta opción aplana unha táboa de valores de Power Fx a un JSON array amigable en lugar dun array de rexistros.
JSONFormat.IndentFour Para mellorar a lexibilidade, a saída contén unha liña nova para cada columna e nivel de aniñamento e usa catro espazos para cada nivel de sangría.
JSONFormat.IncludeBinaryData O resultado inclúe columnas de imaxe, vídeo e clip de audio. Este formato pode aumentar drasticamente o tamaño do resultado e degradar o rendemento da súa aplicación.
JSONFormat.IgnoreBinaryData O resultado non inclúe columnas de imaxe, vídeo nin clip de audio. Se non especificas nin JSONFormat.IncludeBinaryData nin JSONFormat.IgnoreBinaryData, a función produce un erro se atopa datos binarios.
JSONFormat.IgnoreUnsupportedTypes Os tipos de datos non compatibles están permitidos, pero o resultado non os incluirá. Por defecto, os tipos de datos non compatibles producen un erro.

Use as funcións ShowColumns e DropColumns para controlar que datos inclúe o resultado e eliminar tipos de datos non compatibles.

Debido a que JSON pode ser intensiva tanto en memoria como en computación, só podes usar esta función en funcións de comportamento. Podes capturar o resultado dunha variable, que despois podes usar no fluxo de JSON datos.

Se unha columna ten un nome de visualización e un nome lóxico, o resultado contén o nome lóxico. Os nomes para mostrar reflicten o idioma do usuario da aplicación e son, polo tanto, inapropiados para a transferencia de datos a un servizo común.

Sintaxe

JSON( DataStructure [, Format ] )

  • DataStructure – Obrigatorio. A estrutura de datos a converter.JSON As táboas, os rexistros e os valores primitivos admítense, arbitrariamente aniñados.
  • Formato - Opcional. JSONFormat valor de enumeración. O valor predeterminado é JSONFormat.Compact, que non engade novas liñas nin espazos e bloquea os datos binarios e as columnas non compatibles.

Exemplos

Datos xerárquicos

  1. Engada un control de Botón e axuste a súa propiedade OnSelect nesta 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. Seleccione o botón mantendo premida a tecla Alt.

    A colección CitiesByCountry créase con esta estrutura de datos, que pode mostrar seleccionando Coleccións no menú Ficheiro e logo seleccionando o nome da colección.

    Colección CitiesByCountry.

    Tamén pode amosar esta colección seleccionando Configuración>Próximas funcións>Activar a vista de resultados da barra de fórmulas, seleccionando o nome da colección na barra de fórmulas e, a continuación, seleccionando a frecha cara abaixo xunto ao nome da colección baixo a barra de fórmulas.

    Colección na vista de resultados da barra de fórmulas.

  3. Engada outro control de botón e axuste a súa propiedade OnSelect nesta fórmula:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Esta fórmula establece a variable global CitiesByCountryJSON á JSON representación de CitiesByCountry.

  4. Seleccione o botón mantendo premida a tecla Alt.

  5. Engada un control de Etiqueta e configure a súa propiedade Texto nesta variable:

    CitiesByCountryJSON
    

    A etiqueta mostra este resultado, todo nunha soa liña sen espazos, apta para a súa transmisión a través dunha 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. Cambie a fórmula do segundo botón para que a saída sexa máis lexible.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Seleccione o segundo botón mantendo premida a tecla Alt.

    A etiqueta mostra o resultado máis lexible.

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

Imaxes e elementos multimedia en base64

  1. Engada un control de imaxe.

    Este control trae SampleImage consigo.

  2. Engada un control de Botón e axuste a súa propiedade OnSelect nesta fórmula.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Seleccione o botón mantendo premida a tecla Alt.

  4. Engada unha etiqueta e configure a súa propiedade Texto nesta variable.

    ImageJSON
    
  5. Redimensione o control e reduza o tamaño do tipo de letro segundo sexa necesario para mostrar a maior parte do resultado.

    A etiqueta mostra a cadea de texto que capturou a JSON función.

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

Táboas de valores

Esta fórmula:

JSON( [1,2,3] )

Produce a cadea de texto [{"Valor":1},{"Valor":2},{"Valor":3}].

A mesma fórmula coa opción JSONFormat.FlattenValueTables:

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

Produce a cadea de texto [1,2,3].

Teña en conta que a opción FlattenValueTables non ten ningún impacto cando se usa JSON coas coleccións CityPopulations ou CitiesByCountry , xa que estas táboas non son táboas de valores. Unha táboa de valores ten unha única columna e debe chamarse "Valor".