# JsonGet — функция скриптa и диаграммы

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

Синтаксис:

value JsonGet(json, path)

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

Аргументы

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

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

| Пример | Результат |
| --- | --- |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '' )` | Возвращает `{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a' )` | Возвращает `{"xyz":"XYZ"}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a/xyz' )` | Возвращает `"XYZ"` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b' )` | Возвращает `[123,"abc","ABC"]` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/0' )` | Возвращает `123` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/1' )` | Возвращает `abc` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/2' )` | Возвращает `ABC` |
| `JsonGet( '{"a":"b"}','/b' )` | Возвращает `null`. Этот путь не указывает на допустимую часть данных JSON. |
| `JsonGet( '{"a"}','/a' )` | Возвращает `null`. Данные JSON не являются допустимой строкой JSON (член `"a"` не имеет значения). |

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.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`

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

* `IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' )` при использовании вместе с функцией `IsJson` получает текстовую строку JSON для `price` и проверяет, что значение `price` является числом.

* `JsonGet( OrderDetails, '/customer/email' )`, чтобы получить адрес электронной почты клиента, используя правильный путь.

* `JsonGet( OrderDetails, '/total_price' ), )`, чтобы получить итоговую цену, используя правильный путь.

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

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

Первая мера возвращает `-1 true`, так как ключ `price` имеет значение `1200`, которое является числом.

Вторая мера возвращает адрес электронной почты клиента, `john.doe@example.com`, из `OrderDetails`, используя правильный путь к ключу `email` в строке JSON.

Третья мера возвращает `2400`, то есть общую стоимость заказа из поля `OrderDetails`, используя правильный путь к ключу `total_price` в строке JSON.

См. также:

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

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