# JsonSet Функция скрипта и диаграммы

JsonSet() изменяет строку, содержащую данные JSON (JavaScript Object Notation). Может задать или вставить значение JSON с указанием нового местоположения в пути. Данные должны быть допустимым кодом JSON, но могут содержать дополнительные пробелы и символы новой строки.

Примечание к информацииМожно добавить любое число пар name-value с помощью JsonSet.

Синтаксис:

value JsonSet(json, path, value)

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| json | Строка, содержащая данные JSON. |
| path | Путь должен быть указан в соответствии с [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901). Это позволяет составлять свойства внутри данных JSON без применения сложных функций подстрок и индекса, а также конкатенации. |
| value | Новое значение строки в формате JSON. |

Пример. Допустимые и недопустимые выражения диаграммы

| Пример | Результат |
| --- | --- |
| `JsonSet( '{}','/a','"b"' )` | Возвращает `{"a":"b"}` |
| `JsonSet( '[]','/0','"x"' )` | Возвращает `["x"]` |
| `JsonSet( '"abc"','','123' )` | Возвращает `123` |
| `JsonSet( '"abc"','/x','123' )` | Возвращает `null`. Этот путь не указывает на допустимую часть данных JSON. |
| `JsonSet( '{"a":{"b":"c"}}','a/b','"x"' )` | Возвращает `null`. Недопустимый путь. |
| `JsonSet( '{"a":"b"}','/a','abc' )` | Возвращает `null`. Значение не является допустимым JSON. Строку необходимо заключить в кавычки. |

## Пример. Основы использования функции JsonSet

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

#### Выражение диаграммы

Обзор

Данные JSON принимаются в виде текстовой строки в одной строке. Требуется обновить цену товара и общую цену заказа соответственно.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Одно поле в таблице данных называется `OrderDetails`.

Скрипт загрузки

```
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 }'
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* ` OrderDetails
                                   `

Создайте следующую меру:

* `JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total_price',2200)`, чтобы установить цену на `1100` и общую цену на `2200`, используя правильный путь к соответствующим ключам в строке JSON.

Результирующая таблица

| 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} |

Вывод меры обновляет ключи `price` и `total price` до `1100` и `2200` соответственно.

См. также:

* [IsJson Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

* [JsonGet Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)