In MariaDB, JSON_KEYS()
is een ingebouwde functie die een array van de sleutels op het hoogste niveau uit een JSON-document retourneert. Als er een pad is opgegeven, worden de sleutels op het hoogste niveau van dat pad geretourneerd.
Het sluit sleutels uit van geneste subobjecten op het opgegeven niveau.
Als het geselecteerde object leeg is, wordt er ook een lege array geretourneerd.
Syntaxis
De syntaxis gaat als volgt:
JSON_KEYS(json_doc[, path])
Waar json_doc
is het JSON-document, en path
is een pad binnen het document.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Resultaat:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Een pad specificeren
Hier is een voorbeeld van het specificeren van een pad binnen het document:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_KEYS(
@json_document,
'$.details'
) AS Result;
Resultaat:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
Zoals vermeld, worden subobjecten uitgesloten van het resultaat.
Niet-bestaande paden
Het doorgeven van een pad dat niet bestaat in het JSON-document resulteert in NULL
.
Voorbeeld:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_KEYS(
@json_document,
'$.wrong'
) AS Result;
Resultaat:
+--------+ | Result | +--------+ | NULL | +--------+
Lege objecten
Als het geselecteerde object leeg is, wordt een lege array geretourneerd:
SELECT JSON_KEYS('{}');
Resultaat:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Nullargumenten
Als een argument NULL
is , het resultaat is NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Resultaat:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
Onjuist aantal parameters
Het verstrekken van geen argumenten resulteert in een fout:
SELECT JSON_KEYS();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
Hetzelfde geldt wanneer u te weinig of te veel argumenten geeft:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'