JSON_PARSE

✅Eventstream prostředků infrastruktury Azure Stream Analytics ✅

JSON_PARSE převede řetězec ve formátu JSON na záznam, ke kterému můžete přistupovat a dotazovat. Tuto funkci použijte, pokud událost obsahuje vnořený objekt JSON serializovaný jako řetězec, například data vlastnost v Fabric Eventstream change event.

Proč používat JSON_PARSE

Mnoho scénářů streamování, zejména integrace Eventstream, obsahuje události, ve kterých je vlastnost dokument JSON serializovaný jako řetězec. Během deserializace událostí se tyto vnořené datové části považují za řetězce, takže nemůžete přímo přistupovat k jejich vlastnostem jako objekty JSON. Slouží JSON_PARSE k převodu json s kódováním řetězce na strukturovaný záznam, jehož vlastnosti můžete přistupovat a dotazovat.

Syntax

JSON_PARSE ( jsonString )

Argumenty

Name (Název) Typ Description
jsonString nvarchar(max) Platný objekt JSON serializovaný jako řetězec.

Návratový typ

Vrátí parsovaný objekt JSON jako hodnotu typu record.

Zpracování chyb

JSON_PARSE je nehodící funkce. Pokud parsování nejde dokončit, vrátí NULL funkce místo neúspěšného spuštění dotazu. JSON_PARSE vrátí NULL , když:

  • Vstupní výraz není podporovanou řetězcovou hodnotou.
  • Zadaný řetězec není platný JSON.
  • Dojde k dalšímu selhání převodu JSON.

Examples

Příklady používají následující vstupní událost. Vlastnosti old obsahují current objekty JSON serializované jako řetězce.

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

Parsování vnořeného řetězce JSON

Následující dotaz převede řetězec eventrow.old JSON na záznam:

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

Přístup k vlastnostem v analyzovaném záznamu

Následující dotaz parsuje eventrow.current a přistupuje k vlastnostem ve vráceném záznamu pomocí zápisu tečky:

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