parse_json()

Interpreteert een string als een JSON-waarde en retourneert de waarde als dynamic. Indien mogelijk wordt de waarde geconverteerd naar relevante gegevenstypen. Voor strikte parsering zonder gegevenstypeconversie gebruikt u de functies extract() of extract_json().

Het is beter om de functie parse_json() te gebruiken in plaats van de functie extract_json() wanneer u meer dan één element van een samengesteld JSON-object moet extraheren. Gebruik waar mogelijk dynamic().

Afgeschafte aliassen: parsejson(), toobject(), todynamic()

Syntax

parse_json(Json)

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
Json string ✔️ De tekenreeks in de vorm van een waarde in JSON-indeling of een dynamische eigenschappenverzameling om te parseren als JSON.

Retouren

Een object van het type dynamic dat wordt bepaald door de waarde van json:

  • Als json van het type dynamicis, wordt de waarde ervan als zodanig gebruikt.
  • Als json van het type stringis en een correct opgemaakte JSON-tekenreeks is, wordt de tekenreeks geparseerd en wordt de gegenereerde waarde geretourneerd.
  • Als json van het type stringis, maar niet een juist opgemaakte JSON-tekenreeks is, is de geretourneerde waarde een object van het type dynamic dat de oorspronkelijke string waarde bevat.

Voorbeeld

In het volgende voorbeeld, wanneer context_custom_metrics is een string die er als volgt uitziet:

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

vervolgens wordt met de volgende query de waarde van de duration sleuf in het object opgehaald en worden twee sleuven opgehaald, duration.value respectievelijk en duration.min (118.0 en 110.0).

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

Opmerkingen

Het is gebruikelijk om een JSON-tekenreeks te hebben die een eigenschappenverzameling beschrijft waarin een van de 'sleuven' een andere JSON-tekenreeks is.

Bijvoorbeeld:

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

In dergelijke gevallen is het niet alleen nodig om twee keer aan te roepen parse_json , maar ook om ervoor te zorgen dat in de tweede aanroep tostring wordt gebruikt. Anders geeft de tweede aanroep aan parse_json gewoon de invoer door aan de uitvoer als zodanig, omdat het gedeclareerde type is dynamic.

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