Partager via


parse_json()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

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 pertinents. Pour l’analyse stricte sans conversion de type de données, utilisez des 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() si possible.

Alias déconseillés : parsejson(), toobject(), todynamic()

Syntaxe

parse_json(json)

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
json string ✔️ Chaîne sous la forme d’une valeur au format JSON ou d’un conteneur de propriétés dynamiques à analyser en tant que 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 celle-ci récupère deux emplacements et duration.value duration.min (118.0 et 110.0, respectivement).

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

Notes

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