# IsJson スクリプトおよびチャート関数

IsJson() は、指定された文字列に有効な JSON (JavaScript Object Notation) データが含まれているかどうかをテストします。特定の JSON データ タイプを検証することもできます。

構文:

value IsJson(json [, type])

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| json | テストする文字列。余分なスペースまたは改行を含めることができます。 |
| type | テストする JSON データ型を指定するオプションの引数。<br><br><ul> <li> <p>'value' (既定)</p> </li> <li> <p>'object'</p> </li> <li> <p>'array'</p> </li> <li> <p>'文字列'</p> </li> <li> <p>'number'</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`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の 1 つの項目は `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 かどうかを計算します。

結果テーブル

| ID | API\_Response | IsJson(API\_Response) |
| --- | --- | --- |
| 1 | {"id": 1, "name": "Alice"} | -1 (true) |
| 2 | {"id": 2, "name": "Bob"} | -1 (true) |
| 3 | {invalid json string} | 0 (false) |
| 4 | {"id": 4, "name": "Charlie"} | -1 (true) |
| 5 | {"id": 5, name: "David"} | 0 (false) |

出力は、有効な JSON 構文を持つ値に対して `-1`、または true を返します。

出力は、無効な JSON を持つ次の ID レコード (`3` と `5`) に対して`0`、または false を返します。

* `{invalid json string}` ― テキスト文字列が有効な JSON 応答構造を表していません。

* `{"id": 5, name: "David"}` ― 2 番目のキーと値のペアには、キー `"name"` を囲む引用符がありません 。

## 例 - IsJson のシナリオ

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

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の 1 つの項目は `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` を使用して、`price` キーの JSON テキストを取得し、`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) |

`OrderDetails` には有効な JSON 構文が含まれているため、最初のメジャーは `-1 (true)` を返します。

2 番目のメジャーは、`price` キーの値が有効な数字である`1200` であるため、`-1 (true)` を返します。

参照先:

* [JsonGet スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)

* [JsonSet スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)