# JsonGet - 指令碼與圖表函數

JsonGet() 傳回 JSON (JavaScript 物件標記法) 資料字串的路徑。資料必須為有效的 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` 函數結合，可擷取 `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`，這是一個數字。

第二個量值使用 JSON 字串中前往 `email` 索引鍵的正確路徑從 `OrderDetails` 傳回客戶電子郵件地址 `john.doe@example.com`。

第三個量值使用 JSON 字串中前往 `total_price` 索引鍵的正確路徑傳回 `2400`，這是 `OrderDetails` 欄位中的訂單總價。

另請參見：

* [IsJson - 指令碼與圖表函數](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

* [JsonSet - 指令碼與圖表函數](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)