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
Exemplen i det här avsnittet visar hur du använder syntaxen för att komma igång.
Parsning av varaktighetsmått
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ämtar den två fack, 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
Resultat
context_custom_metrics | d | duration_value | duration_min |
---|---|---|---|
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}} | {"duration":{"value":118,"count":5,"min":100,"max":150,"stdDev":0,"sampledValue":118,"sum":118}} | 118 | 100 |
Kapslad JSON-parsning
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
Resultat
print_0 |
---|
{"a":123, "b":"{"c":456}"} |
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-is, eftersom dess deklarerade typ är dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c
Ouput
d_b_c |
---|
456 |