共用方式為


parse_json()

string 解譯為 JSON 值,並以 dynamic 形式傳回值。 可能的話,值會轉換成相關的資料類型。 如需不具數據類型轉換的嚴格剖析,請使用 extract () extract_json () 函式。

當您需要擷取一個以上的 JSON 復合物件元素時,最好在 extract_json () 函式上使用 parse_json (# A1 函式。 盡可能使用 dynamic ()

已被取代的別名: parsejson () 、toobject () 、todynamic ()

語法

parse_json(json)

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
json string ✔️ JSON 格式值動態 屬性包形式的字串,以剖析為 JSON。

傳回

dynamic 類型的物件,其取決於 json 的值:

  • 如果 json 的類型為 dynamic,其值會依現狀使用。
  • 如果 json 的類型為 string,而且是正確格式的 JSON 字串,則會剖析字串並傳回所產生的值。
  • 如果 json 的類型為 string,但不是正確格式的 JSON 字串,則傳回的值是類型為 string 且保有原始 dynamic 值的物件。

範例

在下列範例中,當 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.valueduration.min 分別 (118.0110.0) 。

T
| 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