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

JsonGet() は、JSON (JavaScript Object Notation) データ文字列のパスを返します。データは有効な JSON にする必要がありますが、余分なスペースや改行を含めることができます。

構文:

value JsonGet(json, path)

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

引数

| 引数 | 説明 |
| --- | --- |
| json | JSON データを含む文字列。 |
| path | パスは [RFC6901](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 データを 1 行のテキスト文字列として受け取ります。あなたは以下の情報を取得したいと思っています。

* 商品の価格と、その値が数値であることの検証

* 顧客のメール アドレス

* 合計価格 (価格 \* 数量)

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

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

* 「`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( JsonGet ( OrderDetails, '/items/price' ), 'number' )` は、関数 `IsJson` と併用して、`price` の JSON テキストを取得し、`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` (数値) であるためです。

2 番目のメジャーは、JSON 文字列内の `email` キーへの正しいパスを使用して、`OrderDetails` から顧客のメール アドレス `john.doe@example.com` を返します。

3 番目のメジャーは、JSON 文字列内の`total_price` キーへの正しいパスを使用して、`OrderDetails` 項目から注文の合計価格である `2400` を返します。

参照先:

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

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