Condividi tramite


parse_json()

Si applica a: ✅Microsoft Fabric✅

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.

Esempi

Negli esempi di questa sezione viene illustrato come usare la sintassi per iniziare.

Analisi delle metriche della durata

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}}

La query seguente recupera quindi il valore dello slot di duration nell'oggetto e recupera due slot, duration.value e duration.min ( rispettivamente118.0 e 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

Output

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

Analisi JSON annidata

È 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

Output

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

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 passa semplicemente l'input all'output as-is, perché il tipo dichiarato è 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