共用方式為


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_metricsstring 如下所示的 :

{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}

然後,下列查詢會擷取 物件中位置的值 duration ,並從中分別擷取兩個位置 duration.valueduration.min118.0110.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