Share via


parse_json()

Tolkar ett 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 datatypskonvertering 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 fler ä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 Obligatorisk Beskrivning
Json string ✔️ Strängen i form av ett JSON-formaterat värde eller en dynamisk egenskapsuppsättning som ska parsas som JSON.

Returer

Ett objekt av typen dynamic som bestäms av värdet för json:

  • Om json är av typen dynamicanvänds dess värde som det är.
  • Om json är av typen stringoch ä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 typen dynamic som innehåller det ursprungliga string 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 duration för platsen i -objektet, och från det hämtar den två platser, duration.value och duration.min (118.0110.0respektive ).

T
| extend d=parse_json(context_custom_metrics) 
| extend duration_value=d.duration.value, duration_min=d["duration"]["min"]

Kommentarer

Det är vanligt att ha en JSON-sträng som beskriver en egenskapsuppsättning där en av "platserna" är en annan JSON-sträng.

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 det används i det andra anropet tostring . Annars skickar det andra anropet till parse_json bara indata till utdata som de är, 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