Udostępnij za pośrednictwem


parse_json()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 stringi 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