parse_json()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Interpretuje string
wartość jako wartość JSON i zwraca wartość jako dynamic
. Jeśli to możliwe, wartość jest konwertowana na odpowiednie typy danych. W przypadku ścisłej analizy bez konwersji typu danych należy użyć funkcji extract() lub extract_json().
Lepiej użyć funkcji parse_json() w funkcji extract_json(), gdy trzeba wyodrębnić więcej niż jeden element obiektu złożonego JSON. Użyj funkcji dynamic(), jeśli jest to możliwe.
Przestarzałe aliasy: parsejson(), toobject(), todynamic()
Składnia
parse_json(
JSON)
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
JSON | string |
✔️ | Ciąg w postaci wartości sformatowanej w formacie JSON lub torby właściwości dynamicznej do analizy jako JSON. |
Zwraca
Obiekt typu dynamic
określany przez wartość json:
- Jeśli plik JSON jest typu
dynamic
, jego wartość jest używana jako jest. - Jeśli kod JSON jest typu
string
i jest poprawnie sformatowanym ciągiem JSON, ciąg jest analizowany, a wygenerowana wartość jest zwracana. - Jeśli plik JSON jest typu
string
, ale nie jest poprawnie sformatowanym ciągiem JSON, zwracana wartość jest obiektem typudynamic
, który przechowuje oryginalnąstring
wartość.
Przykład
W poniższym przykładzie, gdy context_custom_metrics
element wygląda string
następująco:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
następnie następujące zapytanie pobiera wartość duration
miejsca w obiekcie, a następnie pobiera dwa miejsca i duration.value
duration.min
(118.0
i 110.0
, odpowiednio).
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
Uwagi
Często występuje ciąg JSON opisujący torbę właściwości, w której jeden z "gniazd" jest innym ciągiem JSON.
Na przykład:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
W takich przypadkach nie tylko konieczne jest wywołanie parse_json
dwukrotnego wywołania, ale także upewnienie się, tostring
że w drugim wywołaniu jest używane. W przeciwnym razie drugie wywołanie metody parse_json
spowoduje przekazanie danych wejściowych do danych wyjściowych, ponieważ jego zadeklarowany typ to dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c