V MariaDB, JSON_KEYS()
je vestavěná funkce, která vrací pole klíčů nejvyšší úrovně z dokumentu JSON. Pokud je zadána cesta, vrátí klíče nejvyšší úrovně z této cesty.
Vyloučí klíče z vnořených dílčích objektů na zadané úrovni.
Pokud je vybraný objekt prázdný, vrátí se prázdné pole.
Syntaxe
Syntaxe vypadá takto:
JSON_KEYS(json_doc[, path])
Kde json_doc
je dokument JSON a path
je cesta v dokumentu.
Příklad
Zde je příklad k demonstraci.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Výsledek:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Určení cesty
Zde je příklad zadání cesty v dokumentu:
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;
Výsledek:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
Jak již bylo zmíněno, dílčí objekty jsou z výsledku vyloučeny.
Neexistující cesty
Předání cesty, která v dokumentu JSON neexistuje, má za následek NULL
.
Příklad:
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;
Výsledek:
+--------+ | Result | +--------+ | NULL | +--------+
Prázdné objekty
Pokud je vybraný objekt prázdný, vrátí se prázdné pole:
SELECT JSON_KEYS('{}');
Výsledek:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Nulové argumenty
Pokud je některý argument NULL
, výsledkem je NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Výsledek:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
Nesprávný počet parametrů
Pokud neposkytnete žádné argumenty, dojde k chybě:
SELECT JSON_KEYS();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
Je to stejné, když poskytnete příliš málo nebo příliš mnoho argumentů:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'