В MariaDB, JSON_KEYS()
е вградена функция, която връща масив от ключове от най-високо ниво от JSON документ. Ако е предоставен път, той връща ключовете от най-високо ниво от този път.
Той изключва ключове от вложени под-обекти в посоченото ниво.
Освен това, ако избраният обект е празен, се връща празен масив.
Синтаксис
Синтаксисът е така:
JSON_KEYS(json_doc[, path])
Където json_doc
е JSON документът и path
е път в документа.
Пример
Ето пример за демонстрация.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Резултат:
+----------------------------+| JSON_KEYS(@json_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;
Резултат:
+------------------------------+| Резултат |+------------------------------+| ["тип", "тегло", "награди"] |+------------------------------+
Както споменахме, подобектите се изключват от резултата.
Несъществуващи пътища
Предаването на път, който не съществува в JSON документа, води до NULL
.
Пример:
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;
Резултат:
<пред>+--------+| Резултат |+--------+| NULL |+--------+Празни обекти
Ако избраният обект е празен, се връща празен масив:
SELECT JSON_KEYS('{}');
Резултат:
+-----------------+| JSON_KEYS('{}') |+-----------------+| [] |+-----------------+
Нулеви аргументи
Ако някой аргумент е NULL
, резултатът е NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Резултат:
+------------------+---------------------------+ ----------------------------+| JSON_KEYS(нула) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) |+-----------------+---------------- -----------+----------------------------+| NULL | NULL | NULL |+-----------------+----------------------+- ---------------------------+
Неправилен брой параметри
Предоставянето на без аргументи води до грешка:
SELECT JSON_KEYS();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „JSON_KEYS“
Същото е, когато предоставите твърде малко или твърде много аргументи:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „JSON_KEYS“