get_json_object-functie

Van toepassing op:aangevinkt ja Databricks SQL aangevinkt ja Databricks Runtime

Extraheert een JSON-object uit path.

Tip

Voor nieuwe code raadt Azure Databricks aan om het gegevenstype VARIANT te gebruiken met de operator : om query's uit te voeren op JSON-gegevens. VARIANT biedt betere lees- en schrijfprestaties, hoofdlettergevoelige veldtoegang en duidelijkere semantiek dan JSON-parsering op basis van tekenreeksen. Zie Hoe verschilt variant dan JSON-tekenreeksen?

Syntaxis

get_json_object(expr, path)

Argumenten

  • expr: Een TEKENREEKS-expressie die een goed opgemaakte JSON bevat.
  • path: Een letterlijke tekenreeks die een JSONPath-expressie bevat die is geroot op $. Zie Notities voor ondersteunde syntaxis en voorbeelden voor veelvoorkomende patronen.

Retouren

EEN TEKENREEKS.

Als het object niet kan worden gevonden, wordt null geretourneerd.

Voorbeelden

-- Extract a top-level field
> SELECT get_json_object('{"a":"b"}', '$.a');
 b

-- Extract a nested field
> SELECT get_json_object('{"a":{"b":"c"}}', '$.a.b');
 c

-- Extract an array element by index
> SELECT get_json_object('{"items":["apple","pear"]}', '$.items[0]');
 apple

-- Extract a field whose name contains a space
> SELECT get_json_object('{"first name":"Ada"}', '$["first name"]');
 Ada

-- Extract a field whose name contains a dot, using bracket notation with double quotes
> SELECT get_json_object('{"ids":{"a.b":"42"}}', '$.ids["a.b"]');
 42

-- Extract a field from every element of an array
> SELECT get_json_object('{"items":[{"n":1},{"n":2}]}', '$.items[*].n');
 [1,2]

-- Returns NULL when the path does not match
> SELECT get_json_object('{"a":"b"}', '$.missing');
 NULL

Aantekeningen

get_json_object gebruikt JSONPath-syntaxis die is geroot op $. Veldtoegang per punt notatie (.field) is niet hoofdlettergevoelig; haak notatie (['field'] of ["field"]) is hoofdlettergevoelig. Dit verschilt van de Azure Databricks JSON-padexpressie gebruikt met de operator : om query's uit te voeren op VARIANT en JSON-tekenreeksen, die afzonderlijk worden gedocumenteerd.