I MariaDB, JSON_KEYS()
er en indbygget funktion, der returnerer en række af nøglerne på øverste niveau fra et JSON-dokument. Hvis en sti er angivet, returnerer den nøglerne på øverste niveau fra den sti.
Det udelukker nøgler fra indlejrede underobjekter på det angivne niveau.
Hvis det valgte objekt er tomt, returneres et tomt array.
Syntaks
Syntaksen ser sådan ud:
JSON_KEYS(json_doc[, path])
Hvor json_doc
er JSON-dokumentet og path
er en sti i dokumentet.
Eksempel
Her er et eksempel til at demonstrere.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Resultat:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Angivelse af en sti
Her er et eksempel på angivelse af en sti 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ævnt er delobjekter udelukket fra resultatet.
Ikke-eksisterende stier
At sende en sti, der ikke findes i JSON-dokumentet, resulterer i NULL
.
Eksempel:
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 | +--------+
Tomme objekter
Hvis det valgte objekt er tomt, returneres et tomt array:
SELECT JSON_KEYS('{}');
Resultat:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Nul-argumenter
Hvis et argument er NULL
, resultatet er 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 | +-----------------+---------------------------+----------------------------+
Forkert parameterantal
Angivelse af ingen argumenter resulterer i en fejl:
SELECT JSON_KEYS();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
Det er det samme, når du giver for få eller for mange argumenter:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'