I MariaDB, JSON_KEYS()
är en inbyggd funktion som returnerar en uppsättning av nycklar på toppnivå från ett JSON-dokument. Om en sökväg tillhandahålls, returnerar den toppnivånycklarna från den sökvägen.
Den exkluderar nycklar från kapslade underobjekt på den angivna nivån.
Om det valda objektet är tomt returneras en tom array.
Syntax
Syntaxen ser ut så här:
JSON_KEYS(json_doc[, path])
Där json_doc
är JSON-dokumentet och path
är en sökväg i dokumentet.
Exempel
Här är ett exempel att visa.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Resultat:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Ange en sökväg
Här är ett exempel på hur du anger en sökväg i dokumentet:
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;
Resultat:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
Som nämnts exkluderas delobjekt från resultatet.
Icke-existerande vägar
Att skicka en sökväg som inte finns i JSON-dokumentet resulterar i NULL
.
Exempel:
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;
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Tömma objekt
Om det valda objektet är tomt returneras en tom array:
SELECT JSON_KEYS('{}');
Resultat:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Nollargument
Om något argument är NULL
, resultatet är NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Resultat:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
Felaktig parameterräkning
Att inte tillhandahålla några argument resulterar i ett fel:
SELECT JSON_KEYS();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
Det är samma sak när du ger för få eller för många argument:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'