JSON_PARSE

✅ Secuencia de eventos de Azure Stream Analytics ✅ Fabric

JSON_PARSE convierte una cadena con formato JSON en un registro al que puede acceder y consultar. Use esta función cuando un evento contiene un objeto JSON anidado serializado como una cadena, como la data propiedad de un evento de cambio eventstream de Fabric.

Por qué usar JSON_PARSE

Muchos escenarios de streaming, especialmente las integraciones de Eventstream, contienen eventos en los que una propiedad es un documento JSON serializado como una cadena. Durante la deserialización de eventos, estas cargas anidadas se tratan como cadenas, por lo que no se puede acceder directamente a sus propiedades como objetos JSON. Se usa JSON_PARSE para convertir JSON con codificación de cadena en un registro estructurado cuyas propiedades se pueden acceder y consultar.

Syntax

JSON_PARSE ( jsonString )

Argumentos

Nombre Tipo Descripción
jsonString nvarchar(max) Objeto JSON válido serializado como una cadena.

Tipo de retorno

Devuelve el objeto JSON analizado como un valor de tipo record.

Gestión de errores

JSON_PARSE es una función que no se inicia. Si no se puede completar el análisis, la función devuelve NULL en lugar de la ejecución de consultas con errores. JSON_PARSE devuelve NULL cuando:

  • La expresión de entrada no es un valor de cadena admitido.
  • La cadena proporcionada no es json válido.
  • Se produce otro error de conversión JSON.

Ejemplos

En los ejemplos se usa el siguiente evento de entrada. Las old propiedades y current contienen objetos JSON serializados como cadenas.

{
  "eventrow": {
    "old": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\"}",
    "current": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\",\"ProductName\":\"Touring-2000 Blue, 54\"}"
  }
}

Análisis de una cadena JSON anidada

La consulta siguiente convierte la cadena JSON de en eventrow.old un registro:

SELECT
    JSON_PARSE(eventrow.old) AS ParsedOldRow
INTO Output
FROM Input

Acceso a las propiedades de un registro analizado

La consulta siguiente analiza eventrow.current y accede a las propiedades del registro devuelto mediante la notación de puntos:

WITH ParsedEvents AS
(
    SELECT JSON_PARSE(eventrow.current) AS ParsedCurrent
    FROM Input
)
SELECT
    ParsedCurrent.SalesOrderID,
    ParsedCurrent.ProductName
FROM ParsedEvents