In MySQL, de JSON_KEYS()
functie retourneert sleutels van de hoogste waarde van een JSON-object. De sleutels worden geretourneerd als een JSON-array, of, als een path
argument wordt gegeven, de sleutels op het hoogste niveau van het geselecteerde pad.
U geeft het JSON-document op als argument voor de functie.
U kunt ook (optioneel) een tweede argument opgeven om aan te geven waar het pad op het hoogste niveau begint vanuit het JSON-document.
Syntaxis
De syntaxis gaat als volgt:
JSON_KEYS(json_doc[, path])
Waar json_doc
is het JSON-document en path
is een optioneel argument om te bepalen waar het pad op het hoogste niveau begint in het JSON-document.
De resultatenarray is leeg als het geselecteerde object leeg is. Als de waarde op het hoogste niveau geneste subobjecten heeft, bevat de geretourneerde waarde geen sleutels van die subobjecten.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Resultaat:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Hier is nog een voorbeeld:
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Resultaat:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Voorbeeld 2 – Geef een pad op
Hier is een voorbeeld van het specificeren van een pad. Hierdoor kunnen we de sleutels van een genest object ophalen (in plaats van beperkt te zijn tot alleen het object op het hoogste niveau van het hele JSON-document).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Resultaat:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Voorbeeld 3 – Niet-bestaand pad
Als u een pad opgeeft dat niet bestaat, wordt een NULL-waarde geretourneerd.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | NULL | +--------+
U krijgt ook een NULL-waarde als een van de argumenten NULL
. is of als het eerste argument geen JSON-object is.
Voorbeeld 4 – Arrays
Arrays zijn geen objecten en bevatten geen sleutel/waarde-paren. Daarom krijg je een NULL-waarde als je sleutels uit een array probeert terug te geven.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | NULL | +--------+
Als een van de elementen van de array echter een object bevat, kunt u nog steeds het path
. gebruiken argument om de sleutels van dat object te krijgen.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Resultaat:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Voorbeeld 5 – Lege objecten
Als het geselecteerde object leeg is, krijg je een lege array.
SELECT JSON_KEYS('{}') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | [] | +--------+