parse_json()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
將 string
解譯為 JSON 值,並將值傳回為 dynamic
。 可能的話,值會轉換成相關的 數據類型。 對於沒有數據類型轉換的嚴格剖析,請使用 extract() 或 extract_json() 函式。
當您需要擷取 JSON 復合物件的多個元素時,最好在 extract_json() 函式上使用 parse_json() 函式。 盡可能使用 dynamic()。
已被取代的別名: parsejson(), toobject(), todynamic()
語法
parse_json(
json)
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
json | string |
✔️ | JSON 格式值或動態屬性包形式的字串,可剖析為 JSON。 |
傳回
型dynamic
別的物件,由 json 值決定:
- 如果 json 的類型為
dynamic
,則其值會依目前方式使用。 - 如果 json 的類型
string
為 ,而且是 格式正確的 JSON 字串,則會剖析字串,並傳回產生的值。 - 如果 json 的類型為
string
,但不是 格式正確的 JSON 字串,則傳回的值是類型的物件dynamic
,其保留原始string
值。
範例
在下列範例中,當 context_custom_metrics
是 string
如下所示的 :
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
然後,下列查詢會擷取 物件中位置的值 duration
,並從中分別擷取兩個位置 duration.value
和 duration.min
(118.0
和 110.0
。
datatable(context_custom_metrics:string)
[
'{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}'
]
| extend d = parse_json(context_custom_metrics)
| extend duration_value = d.duration.value, duration_min = d.duration.min
注意事項
通常會有一個 JSON 字串,其中一個「位置」是另一個 JSON 字串的屬性包。
例如:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
在這種情況下,它不僅需要叫 parse_json
用兩次,而且為了確保在第二次呼叫 tostring
中使用。 否則,對的第二個呼叫 parse_json
只會依目前方式將輸入傳遞至輸出,因為其宣告的型別為 dynamic
。
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c