parse_json()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Interpretiert string
als JSON-Wert und gibt den Wert als dynamic
zurück. Wenn möglich, wird der Wert in relevante Datentypen konvertiert. Verwenden Sie für die strikte Analyse ohne Datentypkonvertierung extrakt() oder extract_json() Funktionen.
Es ist besser, die parse_json()-Funktion über die extract_json() -Funktion zu verwenden, wenn Sie mehrere Elemente eines JSON-Verbundobjekts extrahieren müssen. Verwenden Sie dynamic() nach Möglichkeit.
Veraltete Aliase: parsejson(), toobject(), todynamic()
Syntax
parse_json(
json)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
json | string |
✔️ | Die Zeichenfolge in Form eines JSON-formatierten Werts oder eines dynamischen Eigenschaftenbehälters, der als JSON analysiert werden soll. |
Gibt zurück
Ein Objekt vom Typ dynamic
, das durch den Wert von json festgelegt wird:
- Wenn json vom Typ
dynamic
ist, wird der zugehörige Wert unverändert verwendet. - Wenn json vom Typ
string
und eine ordnungsgemäß formatierte JSON-Zeichenfolge ist, wird die Zeichenfolge analysiert und der generierte Wert zurückgegeben. - Wenn json vom Typ
string
, aber keine ordnungsgemäß formatierte JSON-Zeichenfolge ist, ist der zurückgegebene Wert ein Objekt vom Typdynamic
, das den ursprünglichenstring
-Wert enthält.
Beispiel
Für das folgende Beispiel gilt: Wenn context_custom_metrics
ein string
-Element ist, das wie folgt aussieht:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
anschließend ruft die folgende Abfrage den Wert des duration
Steckplatzes im Objekt ab, und daraus werden zwei Steckplätze abgerufen, duration.value
und duration.min
(118.0
bzw 110.0
. ).
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
Hinweise
Es kommt häufig vor, dass eine JSON-Zeichenfolge einen Eigenschaftenbehälter beschreibt, in dem einer der „Slots“ eine weitere JSON-Zeichenfolge ist.
Zum Beispiel:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
In solchen Fällen ist es nur erforderlich, parse_json
zwei Mal aufzurufen. Jedoch muss sichergestellt werden, dass im zweiten Aufruf tostring
verwendet wird. Andernfalls übergibt der zweite Aufruf von parse_json
einfach die Eingabe unverändert an die Ausgabe, da der deklarierte Typ dynamic
ist.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c