JSON_PARSE

✅Azure Stream Analytics ✅ Fabric Eventstream

JSON_PARSE converte uma string formatada em JSON num registo ao qual podes aceder e consultar. Use esta função quando um evento contém um objeto JSON aninhado serializado como uma string, como a data propriedade num evento de alteração do Fabric Eventstream.

Por que usar JSON_PARSE

Muitos cenários de streaming, particularmente integrações Eventstream, contêm eventos em que uma propriedade é um documento JSON serializado como uma cadeia. Durante a desserialização de eventos, estas cargas úteis aninhadas são tratadas como strings, pelo que não se pode aceder diretamente às suas propriedades como objetos JSON. Use JSON_PARSE para converter JSON codificado em strings num registo estruturado cujas propriedades pode aceder e consultar.

Sintaxe

JSON_PARSE ( jsonString )

Arguments

Name Tipo Description
jsonString nvarchar(max) Um objeto JSON válido serializado como uma string.

Tipo de retorno

Devolve o objeto JSON analisado como um valor do tipo record.

Tratamento de erros

JSON_PARSE é uma função que não é de lançamento. Se a análise não puder ser concluída, a função devolve NULL em vez de falhar na execução da consulta. JSON_PARSE Retorna NULL quando:

  • A expressão de entrada não é um valor de string suportado.
  • A cadeia fornecida não é JSON válida.
  • Ocorre outra falha na conversão JSON.

Examples

Os exemplos usam o seguinte evento de entrada. As old propriedades e current contêm objetos JSON serializados como strings.

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

Analise uma string JSON aninhada

A consulta seguinte converte a cadeia JSON num eventrow.old registo:

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

Aceder a propriedades num registo analisado

A consulta seguinte analisa eventrow.current e acede às propriedades do registo devolvido usando notação de pontos:

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