parse_json()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
string
et 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 typedynamic
qui contient la valeurstring
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