In MariaDB, JSON_DEPTH() ist eine integrierte Funktion, mit der Sie die Tiefe eines JSON-Dokuments überprüfen können.
Es akzeptiert das JSON-Dokument als Argument und gibt die maximale Tiefe des Dokuments zurück.
Syntax
Die Syntax lautet wie folgt:
JSON_DEPTH(json_doc)
Wobei json_doc ist das JSON-Dokument, für das die Tiefe zurückgegeben werden soll.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT JSON_DEPTH('{ "name": "Wag" }'); Ergebnis:
+---------------------------------+
| JSON_DEPTH('{ "name": "Wag" }') |
+---------------------------------+
| 2 |
+---------------------------------+
In diesem Fall ist die Tiefe 2 .
Skalare Werte und leere Objekte/Arrays
Skalare Werte oder leere Arrays oder Objekte haben eine Tiefe von 1 :
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1); Ergebnis:
+------------------+------------------+---------------+
| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) |
+------------------+------------------+---------------+
| 1 | 1 | 1 |
+------------------+------------------+---------------+ Tieferes JSON-Dokument
Hier ist ein Beispiel, das ein JSON-Dokument mit einer Tiefe von 4 verwendet :
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); Ergebnis:
+----------------------------+ | JSON_DEPTH(@json_document) | +----------------------------+ | 4 | +----------------------------+
Null-Argumente
Wenn das Argument NULL ist , ist das Ergebnis NULL :
SELECT JSON_DEPTH(null); Ergebnis:
+------------------+ | JSON_DEPTH(null) | +------------------+ | NULL | +------------------+
Ungültiges JSON
Das Übergeben von ungültigem JSON führt zu NULL mit einer Warnung:
SELECT JSON_DEPTH('{1}'); Ergebnis:
+-------------------+
| JSON_DEPTH('{1}') |
+-------------------+
| NULL |
+-------------------+
1 row in set, 1 warning (0.000 sec) Sehen wir uns die Warnung an:
SHOW WARNINGS; Ergebnis:
+---------+------+--------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------------+ | Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 | +---------+------+--------------------------------------------------------------------------------+
Falsche Parameteranzahl
Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:
SELECT JSON_DEPTH(); Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
Das Gleiche gilt, wenn Sie zu viele Argumente angeben:
SELECT JSON_DEPTH('{"a": 1}', 2); Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'