I MariaDB, JSON_DEPTH()
er en indbygget funktion, der giver dig mulighed for at kontrollere dybden af et JSON-dokument.
Det accepterer JSON-dokumentet som et argument og returnerer den maksimale dybde af dokumentet.
Syntaks
Syntaksen ser sådan ud:
JSON_DEPTH(json_doc)
Hvor json_doc
er det JSON-dokument, som dybden skal returneres for.
Eksempel
Her er et eksempel til at demonstrere.
SELECT JSON_DEPTH('{ "name": "Wag" }');
Resultat:
+---------------------------------+ | JSON_DEPTH('{ "name": "Wag" }') | +---------------------------------+ | 2 | +---------------------------------+
I dette tilfælde er dybden 2
.
Skalære værdier og tomme objekter/arrays
Skalære værdier eller tomme arrays eller objekter har en dybde på 1
:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
Resultat:
+------------------+------------------+---------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) | +------------------+------------------+---------------+ | 1 | 1 | 1 | +------------------+------------------+---------------+
Dybere JSON-dokument
Her er et eksempel, der bruger et JSON-dokument med en dybde på 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);
Resultat:
+----------------------------+ | JSON_DEPTH(@json_document) | +----------------------------+ | 4 | +----------------------------+
Nul-argumenter
Hvis argumentet er NULL
, resultatet er NULL
:
SELECT JSON_DEPTH(null);
Resultat:
+------------------+ | JSON_DEPTH(null) | +------------------+ | NULL | +------------------+
Ugyldig JSON
Overførsel af ugyldig JSON resulterer i NULL
med en advarsel:
SELECT JSON_DEPTH('{1}');
Resultat:
+-------------------+ | JSON_DEPTH('{1}') | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
Lad os se advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+--------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------------+ | Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 | +---------+------+--------------------------------------------------------------------------------+
Forkert parameterantal
Angivelse af ingen argumenter resulterer i en fejl:
SELECT JSON_DEPTH();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
Det er det samme, når du giver for mange argumenter:
SELECT JSON_DEPTH('{"a": 1}', 2);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'