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

JsonSet() は、JSON (JavaScript Object Notation) データを含んでいる文字列を変更します。パスにより指定される新しい場所を使用した JSON 値を設定もしくは挿入することができます。データは有効な JSON にする必要がありますが、余分なスペースや改行を含めることができます。

情報メモJsonSet を使用すると、任意の数の名前と値のペアを追加できます。

構文:

value JsonSet(json, path, value)

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

引数

| 引数 | 説明 |
| --- | --- |
| json | JSON データを含む文字列。 |
| path | パスは [RFC6901](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 データを 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
                                   `

次のメジャーを作成します:

* `JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total_price',2200)` は、JSON 文字列内のそれぞれのキーへの正しいパスを使用して、価格を `1100` に、合計価格を `2200` に設定します。

結果テーブル

| 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/ja-JP/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

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