Megosztás a következőn keresztül:


parse_json()

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A string JSON-értékként értelmezi, és az értéket dynamicértékként adja vissza. Ha lehetséges, az érték megfelelő adattípussá alakul. Az adattípus-átalakítás nélküli szigorú elemzéshez használja extract() vagy extract_json() függvényeket.

Jobb, ha a parse_json() függvényt a extract_json() függvényre használja, ha egy JSON-összetett objektum több elemét kell kinyernie. Ha lehetséges, használja dynamic().

Elavult aliasok: parsejson(), toobject(), todynamic()

Szintaxis

parse_json( json)

További információ szintaxiskonvenciákról.

Paraméterek

Név Típus Szükséges Leírás
json string ✔️ A JSON-formátumú sztring vagy egy dinamikus tulajdonságcsomag formájában JSON-ként való elemzéshez.

Visszatér

Olyan dynamic típusú objektum, amelyet jsonértéke határoz meg:

  • Ha jsondynamictípusú, akkor az értéke as-islesz.
  • Ha jsonstringtípusú, és megfelelően formázott JSON-sztring, akkor a sztring elemzése és a létrehozott érték lesz visszaadva.
  • Ha jsonstringtípusú, de nem megfelelően formázott JSON-sztring, akkor a visszaadott érték olyan dynamic típusú objektum, amely az eredeti string értéket tartalmazza.

Példa

Az alábbi példában, ha context_custom_metrics egy string, amely így néz ki:

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

ezután a következő lekérdezés lekéri az objektum duration pontjának értékét, és abból lekéri a két pontot, duration.value és duration.min (118.0 és 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

Jegyzetek

Gyakran előfordul, hogy egy JSON-sztring egy tulajdonságcsomagot ír le, amelyben az egyik "tárolóhely" egy másik JSON-sztring.

Például:

let d='{"a":123, "b":"{\\"c\\":456}"}';
print d

Ilyen esetekben nem csak kétszer kell meghívni parse_json, hanem annak biztosítása érdekében is, hogy a második hívásban tostring legyen használva. Ellenkező esetben az parse_json második hívása csak a kimeneti as-istovábbítja a bemenetet, mert a deklarált típusa dynamic.

let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c