# IsJson Função de script e de gráfico

IsJson() testa se uma string especificada contém dados JSON (JavaScript Object Notation) válidos. Você também pode validar um tipo de dados JSON específico.

Sintaxe:

value IsJson(json [, type])

Tipo de dados de retorno: dual

Argumentos

| Argumento | Descrição |
| --- | --- |
| json | String a ser testada. Pode conter espaços extras ou novas linhas. |
| type | Argumento opcional que especifica o tipo de dados JSON a ser testado.<br><br><ul> <li> <p>'value' (padrão)</p> </li> <li> <p>'object'</p> </li> <li> <p>'array'</p> </li> <li> <p>'string'</p> </li> <li> <p>'number'</p> </li> <li> <p>'Boolean'</p> </li> <li> <p>'null' </p> </li> </ul> |

Exemplo: Expressões de gráfico válidas e inválidas

| Exemplo | Resultado |
| --- | --- |
| `IsJson( 'null' )` | Retorna `-1 (true)` |
| `IsJson( '"abc"', 'value' )` | Retorna `-1 (true)` |
| `IsJson( '"abc"', 'string' )` | Retorna `-1 (true)` |
| `IsJson( 123, 'number' )` | Retorna `-1 (true)` |
| `IsJson( 'text' )` | Retorna `0 (false)`, `'text'` não é um valor JSON válido |
| `IsJson( '"text"', 'number' )` | Retorna `0 (false)`, `'"text"'` não é um número JSON válido |
| `IsJson( '"text"', 'text' )` | Retorna `  0 (false) `, `'text'` não é um tipo JSON válido |

## Exemplo - Fundamentos de IsJson

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Um campo na tabela de dados chamado `API_Response`.

* Um campo derivado chamado `ID`. Esse campo usa a função `Rec()` para enumerar os registros de entrada.

Script de carregamento

```
Example:
Load
Recno() AS ID, API_Response
inline [
API_Response
'{"id": 1, "name": "Alice"}'
'{"id": 2, "name": "Bob"}'
'{invalid json string}'
'{"id": 4, "name": "Charlie"}'
'{"id": 5, name: "David"}'
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* ` ID
                                   `
* ` API_Response
                                   `

Crie a seguinte dimensão calculada:

* `=IsJson(API_Response)` para calcular se os valores em `API_Response` são JSON válidos.

Tabela de resultados

| ID | API\_Response | IsJson(API\_Response) |
| --- | --- | --- |
| 1 | {"id": 1, "name": "Alice"} | -1 (true) |
| 2 | {"id": 2, "name": "Bob"} | -1 (true) |
| 3 | {string json inválida} | 0 (false) |
| 4 | {"id": 4, "name": "Charlie"} | -1 (true) |
| 5 | {"id": 5, name: "David"} | 0 (false) |

A saída retorna `-1`, ou true, para os valores com sintaxe JSON válida.

A saída retorna `0`, ou false, para os seguintes registros de ID (`3` e `5`) com JSON inválido:

* `{invalid json string}`: A string de texto não representa uma estrutura de resposta JSON válida.

* `{"id": 5, name: "David"}`: O segundo par chave-valor está sem aspas ao redor da chave `"name"`.

## Exemplo - Cenário de IsJson

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Um campo na tabela de dados chamado `OrderDetails`.

Script de carregamento

```
Example:
Load *
INLINE [OrderDetails
'{ "order_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total_price": 2400 }'
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* ` OrderDetails
                                   `

Crie as seguintes medidas:

* `IsJson( OrderDetails)` para calcular se os valores em `OrderDetails` são JSON válidos.

* `IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' )`, usando a função `JsonGet`, ele recupera o texto JSON da chave `price` e valida que o valor de `price` é um número.

Tabela de resultados

| OrderDetails | IsJson(OrderDetails) | IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' ) |
| --- | --- | --- |
| { "order\_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total\_price": 2400 } | -1 (true) | -1 (true) |

A primeira medida retorna `-1 (true)` porque `OrderDetails` contém sintaxe JSON válida.

A segunda medida retorna `-1 (true)` porque o valor da chave `price` é um número válido: `1200`.

Consulte também:

* [JsonGet Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)

* [JsonSet Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)