parse_json()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft 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 tipodynamic
che contiene il valorestring
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