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

IsJson() проверяет, содержит ли указанная строка допустимые данные JSON (JavaScript Object Notation). Также можно проверить конкретный тип данных JSON.

Синтаксис:

value IsJson(json [, type])

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| json | Тестируемая строка. Может содержать дополнительные пробелы и символы новой строки. |
| type | Дополнительный аргумент, задающий тип данных JSON для тестирования.<br><br><ul> <li> <p>'value' (по умолчанию)</p> </li> <li> <p>'объект'</p> </li> <li> <p>'ARRAY'</p> </li> <li> <p>'строка'</p> </li> <li> <p>'число'</p> </li> <li> <p>'BOOLEAN'</p> </li> <li> <p>'null' </p> </li> </ul> |

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

| Пример | Результат |
| --- | --- |
| `IsJson( 'null' )` | Возвращает `-1 (true)` |
| `IsJson( '"abc"', 'value' )` | Возвращает `-1 (true)` |
| `IsJson( '"abc"', 'string' )` | Возвращает `-1 (true)` |
| `IsJson( 123, 'number' )` | Возвращает `-1 (true)` |
| `IsJson( 'text' )` | Возвращает `0 (false)`, `'text'` не является допустимым значением JSON |
| `IsJson( '"text"', 'number' )` | Возвращает `0 (false)`, `'"text"'` не является допустимым числом JSON |
| `IsJson( '"text"', 'text' )` | Возвращает `  0 (false) `, `'text'` не является допустимым типом JSON |

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

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

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

Обзор

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

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

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

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

* Производное поле называется `ID`. Это поле использует функцию `Rec()` для перечисления входных записей.

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

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

Результаты

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

* ` ID
                                   `
* ` API_Response
                                   `

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

* `=IsJson(API_Response)`, чтобы вычислить, являются ли значения в `API_Response` допустимой строкой JSON.

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

| Идентификатор | Ответ\_API | IsJson(Ответ\_API) |
| --- | --- | --- |
| 1 | {"id": 1, "name": "Alice"} | -1 (true) |
| 2 | {"id": 2, "name": "Bob"} | -1 (true) |
| 3 | {недопустимая строка json} | 0 (ложь) |
| 4 | {"id": 4, "name": "Charlie"} | -1 (true) |
| 5 | {"id": 5, name: "David"} | 0 (ложь) |

Вывод возвращает `-1` или true, для тех значений, которые имеют правильный синтаксис JSON.

Функция возвращает `0` или false, для следующих записей идентификаторов (`3` и `5`) с недопустимым синтаксисом JSON:

* `{invalid json string}` ― текстовая строка не представляет собой правильную структуру ответа JSON.

* `{"id": 5, name: "David"}` ― во второй паре «ключ-значение» отсутствуют кавычки вокруг ключа `"name"`.

## Пример. Сценарий использования функции IsJson

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

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

Обзор

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

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

* Набор данных, который загружается в таблицу данных под именем `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( OrderDetails)`, чтобы вычислить, являются ли значения в `OrderDetails` допустимой строкой JSON.

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

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

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

Первая мера возвращает `-1 (true)`, так как `OrderDetails` содержит правильный синтаксис JSON.

Вторая мера возвращает `-1 (true)`, так как значение ключа `price` является допустимым числом, `1200`.

См. также:

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

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