In MariaDB, JSON_KEYS()
è una funzione incorporata che restituisce un array di chiavi di primo livello da un documento JSON. Se viene fornito un percorso, restituisce le chiavi di primo livello da quel percorso.
Esclude le chiavi dagli oggetti secondari nidificati nel livello specificato.
Inoltre, se l'oggetto selezionato è vuoto, viene restituito un array vuoto.
Sintassi
La sintassi è questa:
JSON_KEYS(json_doc[, path])
Dove json_doc
è il documento JSON e path
è un percorso all'interno del documento.
Esempio
Ecco un esempio da dimostrare.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_KEYS(@json_document);
Risultato:
+----------------------------+ | JSON_KEYS(@json_document) | +----------------------------+ | ["name", "type", "weight"] | +----------------------------+
Specifica di un percorso
Ecco un esempio di specifica di un percorso all'interno del documento:
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;
Risultato:
+------------------------------+ | Result | +------------------------------+ | ["type", "weight", "awards"] | +------------------------------+
Come accennato, i sottooggetti sono esclusi dal risultato.
Percorsi inesistenti
Il passaggio di un percorso che non esiste nel documento JSON restituisce NULL
.
Esempio:
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;
Risultato:
+--------+ | Result | +--------+ | NULL | +--------+
Oggetti vuoti
Se l'oggetto selezionato è vuoto, viene restituito un array vuoto:
SELECT JSON_KEYS('{}');
Risultato:
+-----------------+ | JSON_KEYS('{}') | +-----------------+ | [] | +-----------------+
Argomenti nulli
Se un argomento è NULL
, il risultato è NULL
:
SELECT
JSON_KEYS(null),
JSON_KEYS(null, '$.type'),
JSON_KEYS('{"a":1}', null);
Risultato:
+-----------------+---------------------------+----------------------------+ | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) | +-----------------+---------------------------+----------------------------+ | NULL | NULL | NULL | +-----------------+---------------------------+----------------------------+
Conteggio parametri errato
Non fornire argomenti genera un errore:
SELECT JSON_KEYS();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'
È lo stesso quando fornisci troppi pochi o troppi argomenti:
SELECT JSON_KEYS('{ "a": 1}', 1, 2);
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_KEYS'