parse_json()

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 typów 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. Jeśli to możliwe, użyj funkcji dynamic( ).

Przestarzałe aliasy: parsejson(), toobject(), todynamic()

Składnia

parse_json(Json)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Json string ✔️ Ciąg w postaci wartości sformatowanej w formacie JSON lub torby właściwości dynamicznej do analizy w formacie JSON.

Zwraca

Obiekt typu dynamic , który jest określany przez wartość json:

  • Jeśli kod JSON jest typu dynamic, jego wartość jest używana w postaci "is".
  • Jeśli kod JSON jest typu stringi jest prawidłowo sformatowanym ciągiem JSON, ciąg jest analizowany, a wygenerowana wartość jest zwracana.
  • Jeśli kod JSON jest typu string, ale nie jest poprawnie sformatowanym ciągiem JSON, zwracana wartość jest obiektem typu dynamic , 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.valueduration.min (118.0 i 110.0, odpowiednio).

T
| 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 worek właściwości, w którym 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 trzeba wywołać parse_json dwa razy, ale także upewnić 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 w następujący sposób, 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