Condividi tramite


parse_json()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

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ù di un elemento 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 Digita Obbligatorio Descrizione
json string ✔️ Stringa sotto forma di valore in formato JSON o contenitore di proprietà dinamiche da analizzare come JSON.

Valori restituiti

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 tale query recupera due slot, duration.value rispettivamente e (118.0 e duration.min 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

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