parse_json()

Interprète une string comme une valeur JSON et retourne la valeur en tant que dynamic. Si possible, la valeur est convertie en types de données appropriés. Pour une analyse stricte sans conversion de type de données, utilisez les fonctions extract() ou extract_json().

Il est préférable d’utiliser la fonction parse_json() sur la fonction extract_json() lorsque vous devez extraire plusieurs éléments d’un objet composé JSON. Utilisez dynamic() lorsque cela est possible.

Alias dépréciés : parsejson(), toobject(), todynamic()

Syntaxe

parse_json(json)

Découvrez les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
json string ✔️ Chaîne sous la forme d’une valeur au format JSON ou d’un conteneur de propriétés dynamiques à analyser au format JSON.

Retours

Objet de type dynamic déterminé par la valeur de json :

  • Si json est de type dynamic, sa valeur est utilisée telle quelle.
  • Si json est de type stringet qu’il s’agit d’une chaîne JSON correctement mise en forme, la chaîne est analysée et la valeur produite est retournée.
  • Si json est de type string, mais qu’il ne s’agit pas d’une chaîne JSON correctement mise en forme, la valeur retournée est un objet de type dynamic qui contient la valeur string d’origine.

Exemple

Dans l’exemple suivant, quand context_custom_metrics est un élément string, le résultat ressemble à ceci :

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

ensuite, la requête suivante récupère la valeur de l’emplacement duration dans l’objet , et à partir de là, elle récupère deux emplacements, duration.value et duration.min (118.0 et 110.0, respectivement).

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

Remarques

Il est courant d’avoir une chaîne JSON qui décrit un conteneur de propriétés dans lequel l’un des « emplacements » est une autre chaîne JSON.

Par exemple :

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

Dans ce cas, il est nécessaire d’appeler parse_json deux fois, et également de s’assurer que dans le deuxième appel, tostring est utilisé. Sinon, le deuxième appel à parse_json passe simplement l’entrée à la sortie telle quelle, car son type déclaré est dynamic.

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