In MariaDB, JSON_KEYS()
ist eine integrierte Funktion, die ein Array der Schlüssel der obersten Ebene aus einem JSON-Dokument zurückgibt. Wenn ein Pfad angegeben wird, werden die Schlüssel der obersten Ebene von diesem Pfad zurückgegeben.
Es schließt Schlüssel von verschachtelten Unterobjekten in der angegebenen Ebene aus.
Auch wenn das ausgewählte Objekt leer ist, wird ein leeres Array zurückgegeben.
Syntax
Die Syntax sieht so aus:
JSON_KEYS(json_doc[, path])
Wobei json_doc
ist das JSON-Dokument und path
ist ein Pfad innerhalb des Dokuments.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Ergebnis:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Pfad angeben
Hier ist ein Beispiel für die Angabe eines Pfads innerhalb des Dokuments:
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;
Ergebnis:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
Wie bereits erwähnt, werden Unterobjekte vom Ergebnis ausgeschlossen.
Nicht vorhandene Pfade
Das Übergeben eines Pfads, der im JSON-Dokument nicht vorhanden ist, führt zu NULL
.
Beispiel:
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;
Ergebnis:
+--------+ | Result | +--------+ | NULL | +--------+
Leere Objekte
Wenn das ausgewählte Objekt leer ist, wird ein leeres Array zurückgegeben:
SELECT JSON_KEYS('{}');
Ergebnis:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Null-Argumente
Wenn irgendein Argument NULL
ist , ist das Ergebnis NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Ergebnis:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
Falsche Parameteranzahl
Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:
SELECT JSON_KEYS();
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
Das Gleiche gilt, wenn Sie zu wenige oder zu viele Argumente angeben:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'