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

JsonSet() modifica uma string contendo dados JSON (JavaScript Object Notation). Ele pode definir ou inserir um valor JSON com o novo local especificado pelo caminho. Os dados devem ser JSON válidos, mas podem conter espaços extras ou novas linhas.

Nota informativaVocê pode adicionar qualquer número de pares nome-valor com JsonSet.

Sintaxe:

value JsonSet(json, path, value)

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 permite o acúmulo de propriedades dentro de dados JSON sem usar funções complexas de substring ou índice e concatenação. |
| value | O novo valor da string em formato JSON. |

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

| Exemplo | Resultado |
| --- | --- |
| `JsonSet( '{}','/a','"b"' )` | Retorna `{"a":"b"}` |
| `JsonSet( '[]','/0','"x"' )` | Retorna `["x"]` |
| `JsonSet( '"abc"','','123' )` | Retorna `123` |
| `JsonSet( '"abc"','/x','123' )` | Retorna `null`. O caminho não aponta para uma parte válida dos dados JSON. |
| `JsonSet( '{"a":{"b":"c"}}','a/b','"x"' )` | Retorna `null`. O caminho é inválido. |
| `JsonSet( '{"a":"b"}','/a','abc' )` | Retorna `null`. O valor não é um JSON válido. Uma string deve estar entre aspas. |

## Exemplo - Fundamentos de JsonSet

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

#### Expressão de gráfico

Visão geral

Os dados JSON são recebidos como uma string de texto em uma única linha. Você deseja atualizar o preço do item e o preço total do pedido adequadamente.

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 a seguinte medida:

* `JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total_price',2200)` para definir o preço para `1100` e o preço total para `2200` usando o caminho correto para as respectivas chaves na string JSON.

Tabela de resultados

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

O resultado da medida atualiza as chaves `price` e `total price` para `1100` e `2200` respectivamente.

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)

* [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)