parse_json()
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Interpreta string
como un valor JSON y devuelve el valor como dynamic
. Si es posible, el valor se convierte en tipos de datos pertinentes. Para un análisis estricto sin conversión de tipos de datos, use las funciones extract() o extract_json().
Es mejor usar la función parse_json() en la función extract_json() cuando necesite extraer más de un elemento de un objeto compuesto JSON. Use dynamic() siempre que sea posible.
Alias en desuso: parsejson(), toobject(), todynamic()
Sintaxis
parse_json(
json)
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
json | string |
✔️ | Cadena en forma de un valor con formato JSON o un contenedor de propiedades dinámicas para analizarlo como JSON. |
Devoluciones
Un objeto de tipo dynamic
que viene determinado por el valor de json:
- Si json es de tipo
dynamic
, su valor se usa tal cual. - Si json es de tipo
string
, y es una cadena JSON con formato correcto, se analiza la cadena y se devuelve el valor generado. - Si json es de tipo
string
, pero no es una cadena JSON con formato correcto, el valor devuelto es un objeto de tipodynamic
que contiene el valor destring
original.
Ejemplo
En el ejemplo siguiente, cuando context_custom_metrics
es un elemento string
similar a este:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
a continuación, la consulta siguiente recupera el valor de la duration
ranura en el objeto y de que recupera dos ranuras, duration.value
y (118.0
y duration.min
110.0
, respectivamente).
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
Notas
Normalmente se tiene una cadena JSON que describe una bolsa de propiedades en la que una de las "ranuras" es otra cadena JSON.
Por ejemplo:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
En tales casos, no solo es necesario invocar dos veces a parse_json
, sino que también debe asegurarse de que, en la segunda llamada, se usa tostring
. De lo contrario, la segunda llamada a parse_json
simplemente pasará la entrada a la salida tal cual, porque su tipo declarado es dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c