Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Aplicativos de
tela Copilot Studio Aplicativos baseados
em
modelo Power Platform CLI
Dataverse funções
Power Pages
Interpreta uma cadeia de caracteres JSON e retorna um valor dinâmico ou um valor digitado específico se um tipo for fornecido.
Importante
- Usar o segundo argumento para ParseJSON converter em um objeto tipado é um recurso experimental.
- Os recursos experimentais não foram criados para uso em ambientes de produção e podem ter funcionalidade restrita. Esses recursos são disponibilizados antes de um lançamento oficial para que você possa ter acesso antecipado e fornecer comentários. Mais informações: Compreender os recursos experimentais, em versão preliminar e descontinuados em aplicativos de tela
- O comportamento que este artigo descreve está disponível somente quando o recurso experimental Tipos definidos pelo usuário em Configurações > Recursos futuros > Experimentais está ativado (está desativado por padrão).
- Seus comentários são muito importantes para nós. Diga o que você pensa no fórum da comunidade de recursos experimentais do Power Apps.
Description
A ParseJSON função analisa uma cadeia de caracteres JSON válida e retorna um valor dinâmico que representa a estrutura JSON.
Como opção, use o segundo argumento para converter o JSON em um objeto tipado que pode ser usado diretamente em fórmulas do Power Fx. Isso torna o resultado mais fácil de consumir, pois conversões e coerções no ponto de uso não são mais necessárias. O JSON não tipado é mapeado para o tipo com estas regras:
- As colunas no tipo que não estão presentes no JSON são preenchidas com um espaço em branco.
- As colunas no JSON que não estão presentes no tipo são ignoradas.
- Colunas que estão no tipo e JSON, o valor JSON deve ser coercível para o tipo.
A ParseJSON função poderá retornar erros se o texto não for JSON válido de acordo com o formato JSON (JavaScript Object Notation) descrito em ECMA-404 e IETF RFC 8259.
Sintaxe
ParseJSON( JSONString [ , Tipo ] )
- JSONString – obrigatório. A estrutura JSON representada como texto.
- Tipo - Opcional. A definição do tipo de Power Fx para a estrutura JSON. Sem esse argumento, ParseJSON retorna um valor dinâmico; com ele, a função retorna um valor tipado específico.
Convertendo valores dinâmicos
Sem o segundo argumento, ParseJSON retorna um valor dinâmico que requer a conversão explícita de valores de campo em tipos de dados com suporte. A tabela a seguir lista os tipos de dados no Power Apps e um tipo de dados JSON correspondente e como convertê-los.
| Tipo de dados | Exemplos JSON | Description | Conversão de exemplo |
|---|---|---|---|
| booleano | { "bool": true } |
Boolean é um tipo explícito em JSON e pode ser convertido diretamente. | Boolean( ParseJSON("{ "bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Não há um tipo de cor em JSON. Os valores de cor podem ser criados com base em inteiros RGBA ou cadeias de caracteres hexadecimais. |
ColorValue( ParseJSON( "{ "color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ "r"": 255, "g"": 128, ""b": 0, "a"": 0,5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) |
| Moeda, Número | { "numbervalue": 123.5 } |
Os números são representados diretamente em JSON com um ponto ( . ) como o separador decimal. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| Data, DateTime, Hora | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
O JSON não tem um tipo de data ou hora, portanto, só pode representar datas e horas como cadeias de caracteres. Um valor dinâmico pode ser convertido diretamente de uma cadeia de caracteres no formato ISO 8601 para uma data, hora ou datetime. Para outros formatos, primeiro converta o campo JSON em texto usando a função Text() e, em seguida, use a função DateValue(), TimeValue() ou DateTimeValue() que, por padrão, usará o idioma das configurações do usuário atual. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }"). appointment ) DateValue( Text( ParseJSON("{ "appointment"": ""May 5, 2022"" }"). appointment ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
O JSON não tem um tipo de dados para GUIds, então eles só podem ser representados como cadeias de caracteres. | GUID( ParseJSON("{ "id"": ""123e4567-e89b-12d3-a456-426655440000"" }"). id ) |
| Hiperlink, Imagem, Mídia | { "URI": "https://northwindtraders.com/logo.jpg" } |
Estes tipos de dados são tipos de dados de texto e podem ser convertidos em texto e usados no Power Apps. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Opção | { "status": 1 }{ "status": "Closed" } |
As opções são apresentadas como cadeias de caracteres localizadas, com suporte de um número. A função JSON() serializa uma opção para seu número de suporte. Não há conversão direta de número ou cadeia de caracteres em uma opção, mas as funções Switch() ou If() podem ser usadas no valor de texto ou número. | Switch( Value( ParseJSON( "{ "status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Registro | { "field": "value" } |
Não há conversão direta de um objeto JSON para uma estrutura de registro, mas campos individuais podem ser recuperados do valor dinâmico para formar um registro. | { campo: Texto( ParseJSON( "{ "campo"": ""value"" }" ).field ) } |
| Referência de Registro | n/d | As referências de registro são exclusivas das fontes de dados e não podem ser serializadas ou desserializadas. Os valores de campo que representam chaves exclusivas podem ser usados em JSON para identificar registros que podem então ser consultados. | n/d |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
O JSON pode conter matrizes, que podem ser convertidas em tabelas. Esses valores podem ser matrizes de registros ou matrizes de valores que são efetivamente tabelas de coluna única. ParseJSON() As matrizes só podem ser convertidas em uma única tabela de colunas de valores dinâmicos e podem ser usadas como tal ou convertidas em tabelas de registros tipadas usando ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, "name"": "one"" }, { ""id"": 2, "name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| Texto | { "stringField": "this is text" } |
Text é um tipo explícito em JSON e pode ser convertido diretamente. | Text( ParseJSON( "{ "stringField"": ""this is text"" }"). stringField ) |
| Duas opções | { "available": true }{ "available": "Yes" } |
Duas opções são apresentadas como cadeias de caracteres localizadas, com suporte de um booliano. A função JSON() serializa duas opções para seu valor booliano. Não há conversão direta de booliano, número ou cadeia de caracteres em duas opções, mas as funções Switch() ou If() podem ser usadas no valor de texto, número ou booliano. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Exemplos
Acessar valores de campo
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- A fórmula a seguir retorna o texto
text value:Text( ParseJSON( JsonString ).parent.child ) - A fórmula a seguir retorna o número
567:Value( ParseJSON( JsonString ).number )
Caso um nome de campo consista em um nome de identificador inválido, você pode colocar os nomes dos campos entre aspas simples.
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "0": { "child-field": "text value" } }
- A fórmula a seguir retorna o texto
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Em branco
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "text": "text value" , "number": 567, "empty": null }
- A tentativa de acessar campos não existentes retorna Blank(). A fórmula a seguir retorna
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Os valores
nullJSON são considerados Blank(). A fórmula a seguir retornatrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Matrizes Simples
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "array": [1, 2, 3] }
- Acessar o segundo número na tabela de coluna única do campo de matriz de valores dinâmicos e converter em um número usando Value() retorna
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Convertendo a tabela de coluna única de valores dinâmicos no campo de matriz em uma única tabela de colunas de números
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Matrizes de Registros
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
A conversão em uma tabela tipada de registros diretamente com ForAll() pode ser feita usando
ThisRecord.[fieldname]para acessar campos dinâmicos e convertê-los em tipos específicos:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matriz para tabela
- Converter valores dinâmicos em uma tabela usando a função Table() resulta em uma tabela de coluna única de valores dinâmicos . Então, o objeto precisa ser acessado usando a coluna
Value(único) e ser convertido em tipos conforme explicado anteriormente.
Considerando a seguinte cadeia de caracteres JSON em uma variável chamada JsonString
{ "array": [1, 2, 3] }
Table() retorna uma tabela de coluna única de valores dinâmicos com um valor de coluna única para número na matriz...
Set(untypedTable, Table( ParseJSON( JsonString ).array ));
Value( Index(untypedTable, 1).Value.Value )
```
Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Table() retorna uma tabela de coluna única de valores dinâmicos que representa cada objeto json na matriz.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )