Dans MySQL, le JSON_KEYS()
La fonction renvoie les clés à partir de la valeur de niveau supérieur d'un objet JSON. Les clés sont renvoyées sous la forme d'un tableau JSON ou, s'il s'agit d'un path
argument est donné, les clés de niveau supérieur du chemin sélectionné.
Vous fournissez le document JSON comme argument à la fonction.
Vous pouvez également (facultatif) fournir un deuxième argument pour spécifier où le chemin "de niveau supérieur" commence à partir du document JSON.
Syntaxe
La syntaxe ressemble à ceci :
JSON_KEYS(json_doc[, path])
Où json_doc
est le document JSON et le path
est un argument facultatif pour déterminer où commence le chemin "de niveau supérieur" dans le document JSON.
Le tableau de résultat est vide si l'objet sélectionné est vide. Si la valeur de niveau supérieur a des sous-objets imbriqués, la valeur de retour n'inclut pas les clés de ces sous-objets.
Exemple 1 - Utilisation de base
Voici un exemple pour illustrer.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Résultat :
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Voici un autre exemple :
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Résultat :
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Exemple 2 - Spécifier un chemin
Voici un exemple de spécification d'un chemin. Cela nous permet d'obtenir les clés d'un objet imbriqué (au lieu d'être limité à l'objet de niveau supérieur de l'ensemble du document JSON).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Résultat :
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Exemple 3 - Chemin inexistant
Si vous spécifiez un chemin qui n'existe pas, une valeur NULL est renvoyée.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | NULL | +--------+
Vous obtiendrez également une valeur NULL si l'un des arguments est NULL
ou si le premier argument n'est pas un objet JSON.
Exemple 4 – Tableaux
Les tableaux ne sont pas des objets et ne contiennent pas de paires clé/valeur. Par conséquent, vous obtiendrez une valeur NULL si vous essayez de renvoyer des clés à partir d'un tableau.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | NULL | +--------+
Cependant, si l'un des éléments du tableau contient un objet, vous pouvez toujours utiliser le path
argument pour obtenir les clés de cet objet.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Résultat :
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Exemple 5 – Objets vides
Si l'objet sélectionné est vide, vous obtiendrez un tableau vide.
SELECT JSON_KEYS('{}') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | [] | +--------+