Partager via


parse_json()

S’applique à : ✅Microsoft Fabric✅

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.

Exemples

Les exemples de cette section montrent comment utiliser la syntaxe pour vous aider à commencer.

Analyse des métriques de durée

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, duration.value et 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

Sortie

context_custom_metrics d duration_value duration_min
{"duration » :{"value » :118.0,"count » :5.0,"min » :100.0,"max » :150.0,"stdDev » :0.0,"sampledValue » :118.0,"sum » :118.0}} {"duration » :{"value » :118,"count » :5,"min » :100,"max » :150,"stdDev » :0,"sampledValue » :118,"sum » :118}} 118 100

Analyse JSON imbriquée

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

Sortie

print_0
{"a » :123, « b » :"{"c » :456}"}

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 transmet simplement l’entrée au as-isde sortie, 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

ouput

d_b_c
456