parse_json()
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Tolkar en string
som ett JSON-värde och returnerar värdet som dynamic
. Om möjligt konverteras värdet till relevanta datatyper. För strikt parsning utan konvertering av datatyp använder du funktionerna extract() eller extract_json().
Det är bättre att använda funktionen parse_json() över funktionen extract_json() när du behöver extrahera mer än ett element i ett JSON-sammansatt objekt. Använd dynamic() när det är möjligt.
Inaktuella alias: parsejson(), toobject(), todynamic()
Syntax
parse_json(
json)
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
json | string |
✔️ | Strängen i form av ett JSON-formaterat värde eller en dynamisk egenskapsväska som parsas som JSON. |
Returnerar
Ett objekt av typen dynamic
som bestäms av värdet för json:
- Om json är av typen
dynamic
används dess värde as-is. - Om json är av typen
string
och är en korrekt formaterad JSON-sträng, parsas strängen och värdet som skapas returneras. - Om json är av typen
string
, men det inte är en korrekt formaterad JSON-sträng, är det returnerade värdet ett objekt av typendynamic
som innehåller det ursprungligastring
-värdet.
Exempel
I följande exempel, när context_custom_metrics
är en string
som ser ut så här:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
sedan hämtar följande fråga värdet för det duration
facket i objektet och från det hämtas två platser, duration.value
och duration.min
(118.0
respektive 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
Anteckningar
Det är vanligt att ha en JSON-sträng som beskriver en egenskapsväska där en av "platserna" är en annan JSON-sträng.
Till exempel:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
I sådana fall är det inte bara nödvändigt att anropa parse_json
två gånger, utan också att se till att tostring
används i det andra anropet. Annars skickar det andra anropet till parse_json
bara indata till utdata as-iseftersom dess deklarerade typ är dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c