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

JsonGet() retorna o caminho de uma string de dados JSON (JavaScript Object Notation). Os dados devem ser JSON válidos, mas podem conter espaços extras ou novas linhas.

Sintaxe:

value JsonGet(json, path)

Tipo de dados de retorno: dual

Argumentos

| Argumento | Descrição |
| --- | --- |
| json | String contendo dados JSON. |
| path | O caminho deve ser especificado de acordo com a [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901). Isso permitirá a pesquisa de propriedades dentro de dados JSON sem usar funções complexas de substring ou índice. |

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

| Exemplo | Resultado |
| --- | --- |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '' )` | Retorna `{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a' )` | Retorna `{"xyz":"XYZ"}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a/xyz' )` | Retorna `"XYZ"` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b' )` | Retorna `[123,"abc","ABC"]` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/0' )` | Retorna `123` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/1' )` | Retorna `abc` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/2' )` | Retorna `ABC` |
| `JsonGet( '{"a":"b"}','/b' )` | Retorna `null`. O caminho não aponta para uma parte válida dos dados JSON. |
| `JsonGet( '{"a"}','/a' )` | Retorna `null`. Os dados JSON não são um JSON válido (o membro `"a"` não tem um valor). |

## Exemplo - Fundamentos de JsonGet

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

#### Expressão de gráfico

Visão geral

Você recebe dados JSON com detalhes do pedido como uma string de texto em uma única linha. Você deseja recuperar as seguintes informações:

* preço do item e validação de que o valor é um número

* endereço de e-mail do cliente

* preço total (preço \* quantidade)

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( JsonGet ( OrderDetails, '/items/price' ), 'number' )`, combinado com a função `IsJson`, recupera o texto JSON para `price` e valida se o valor de `price` é um número.

* `JsonGet( OrderDetails, '/customer/email' )` para recuperar o endereço de e-mail do cliente usando o caminho correto.

* `JsonGet( OrderDetails, '/total_price' ), )` para recuperar o preço total usando o caminho correto.

Tabela de resultados

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

A primeira medida retorna `-1 true` porque a chave `price` tem um valor de `1200`, que é um número.

A segunda medida retorna o endereço de e-mail do cliente, `john.doe@example.com`, de `OrderDetails` usando o caminho correto para a chave `email` na string JSON.

A terceira medida retorna `2400`, que é o preço total do pedido do campo `OrderDetails`, usando o caminho correto para a chave `total_price` na string JSON.

Consulte também:

* [IsJson Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.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)