Dela via


parse_json()

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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 dynamicanvänds dess värde as-is.
  • 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 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