Dans MariaDB, JSON_DEPTH()
est une fonction intégrée qui vous permet de vérifier la profondeur d'un document JSON.
Il accepte le document JSON comme argument et renvoie la profondeur maximale du document.
Syntaxe
La syntaxe ressemble à ceci :
JSON_DEPTH(json_doc)
Où json_doc
est le document JSON pour lequel renvoyer la profondeur.
Exemple
Voici un exemple pour illustrer.
SELECT JSON_DEPTH('{ "name": "Wag" }');
Résultat :
+---------------------------------+ | JSON_DEPTH('{ "name": "Wag" }') | +---------------------------------+ | 2 | +---------------------------------+
Dans ce cas, la profondeur est 2
.
Valeurs scalaires et objets/tableaux vides
Les valeurs scalaires ou les tableaux ou objets vides ont une profondeur de 1
:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
Résultat :
+------------------+------------------+---------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) | +------------------+------------------+---------------+ | 1 | 1 | 1 | +------------------+------------------+---------------+
Document JSON plus approfondi
Voici un exemple qui utilise un document JSON avec une profondeur de 4
:
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_DEPTH(@json_document);
Résultat :
+----------------------------+ | JSON_DEPTH(@json_document) | +----------------------------+ | 4 | +----------------------------+
Arguments nuls
Si l'argument est NULL
, le résultat est NULL
:
SELECT JSON_DEPTH(null);
Résultat :
+------------------+ | JSON_DEPTH(null) | +------------------+ | NULL | +------------------+
JSON non valide
Passer des résultats JSON invalides dans NULL
avec un avertissement :
SELECT JSON_DEPTH('{1}');
Résultat :
+-------------------+ | JSON_DEPTH('{1}') | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
Voyons l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+--------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------------+ | Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 | +---------+------+--------------------------------------------------------------------------------+
Nombre de paramètres incorrect
Ne fournir aucun argument génère une erreur :
SELECT JSON_DEPTH();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
Il en va de même lorsque vous fournissez trop d'arguments :
SELECT JSON_DEPTH('{"a": 1}', 2);
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'