JSON_PARSE

✅ ✅ Azure Stream Analytics Fabric Eventstream

JSON_PARSE konverterar en JSON-formaterad sträng till en post som du kan komma åt och köra frågor mot. Använd den här funktionen när en händelse innehåller ett kapslat JSON-objekt serialiserat som en sträng, till exempel data egenskapen i en Fabric Händelseströmsändringshändelse.

Varför använda JSON_PARSE

Många strömningsscenarier, särskilt Eventstream-integreringar, innehåller händelser där en egenskap är ett JSON-dokument serialiserat som en sträng. Under händelsedeserialisering behandlas dessa kapslade nyttolaster som strängar, så du kan inte direkt komma åt deras egenskaper som JSON-objekt. Använd JSON_PARSE för att konvertera strängkodad JSON till en strukturerad post vars egenskaper du kan komma åt och fråga efter.

Syntax

JSON_PARSE ( jsonString )

Arguments

Name Type Description
jsonString nvarchar(max) Ett giltigt JSON-objekt serialiserat som en sträng.

Returtyp

Returnerar det parsade JSON-objektet som ett värde av typen record.

Felhantering

JSON_PARSE är en icke-kastande funktion. Om parsningen inte kan slutföras returnerar NULL funktionen i stället för att frågekörningen misslyckas. JSON_PARSE returnerar NULL när:

  • Indatauttrycket är inte ett strängvärde som stöds.
  • Den angivna strängen är inte giltig JSON.
  • Ett annat JSON-konverteringsfel inträffar.

Examples

Exemplen använder följande indatahändelse. Egenskaperna old och current innehåller JSON-objekt som serialiseras som strängar.

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

Parsa en kapslad JSON-sträng

Följande fråga konverterar JSON-strängen till eventrow.old en post:

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

Åtkomstegenskaper i en tolkad post

Följande fråga parsar eventrow.current och kommer åt egenskaper i den returnerade posten med hjälp av punkt notation:

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