Udostępnij za pośrednictwem


parse_json()

Dotyczy: ✅Microsoft Fabric✅

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łady

W przykładach w tej sekcji pokazano, jak używać składni, aby ułatwić rozpoczęcie pracy.

Analizowanie metryk czasu trwania

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ść miejsca duration w obiekcie, a następnie pobiera dwa miejsca, duration.value i duration.min ( odpowiednio118.0 i 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

Wynik

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

Analizowanie zagnieżdżonych danych JSON

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

Wynik

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

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 parse_json po prostu przekazuje dane wejściowe do danych wyjściowych as-is, ponieważ jego zadeklarowany typ jest 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