parse_json()

Interpreta string como un valor JSON y devuelve el valor como dynamic. Si es posible, el valor se convierte en tipos de datos relevantes. Para el 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 Tipo Requerido 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 tipo dynamic que contiene el valor de string 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 duration.min (118.0 y 110.0, respectivamente).

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