parse_json()

Interpreta string come valore JSON e restituisce il valore come dynamic. Se possibile, il valore viene convertito in tipi di dati pertinenti. Per l'analisi rigorosa senza conversione dei tipi di dati, usare le funzioni extract() o extract_json().

È preferibile usare la funzione parse_json() sulla funzione extract_json() quando è necessario estrarre più elementi di un oggetto composto JSON. Usare dynamic() quando possibile.

Alias deprecati: parsejson(), toobject(), todynamic()

Sintassi

parse_json(json)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
json string ✔️ Stringa sotto forma di valore in formato JSON o contenitore di proprietà dinamiche da analizzare come JSON.

Restituisce

Un oggetto di tipo dynamic determinato dal valore di json:

  • Se json è di tipo dynamic, il relativo valore viene usato così com'è.
  • Se json è di tipo string ed è una stringa JSON correttamente formattata, la stringa viene analizzata e viene restituito il valore prodotto.
  • Se json è di tipo string, ma non è una stringa JSON correttamente formattata, il valore restituito è un oggetto di tipo dynamic che contiene il valore string originale.

Esempio

Nell'esempio seguente, quando context_custom_metrics è un valore string simile al seguente:

{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}

quindi la query seguente recupera il valore dello duration slot nell'oggetto e da che recupera due slot e duration.valueduration.min (118.0 e 110.0, rispettivamente).

T
| extend d=parse_json(context_custom_metrics) 
| extend duration_value=d.duration.value, duration_min=d["duration"]["min"]

Note

È comune avere una stringa JSON che descrive un contenitore di proprietà in cui uno degli slot è un'altra stringa JSON.

Ad esempio:

let d='{"a":123, "b":"{\\"c\\":456}"}';
print d

In tali casi, non solo è necessario richiamare due volte parse_json, ma bisogna anche assicurarsi che nella seconda chiamata venga usato tostring. In caso contrario, la seconda chiamata a parse_json si limiterà a passare l'input all'output così com'è, perché il relativo tipo dichiarato è dynamic.

let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c