Dans MariaDB, JSON_COMPACT()
est une fonction intégrée qui supprime tous les espaces inutiles d'un document JSON, afin qu'il soit aussi court et compact que possible, et renvoie le résultat.
Cela peut être pratique lorsque vous devez stocker des données JSON dans une colonne de base de données et que vous ne voulez pas que les documents JSON utilisent plus d'espace que nécessaire.
Pour l'effet inverse (c'est-à-dire pour embellir un document JSON en ajoutant des retraits et en le répartissant sur plusieurs lignes), utilisez le JSON_DETAILED()
fonction.
Syntaxe
La syntaxe ressemble à ceci :
JSON_COMPACT(json_doc)
Où json_doc
est le document JSON.
Exemple
Voici un exemple pour illustrer.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Résultat :
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
Dans ce cas, la première colonne contient la version compactée et la deuxième colonne contient le document JSON d'origine avant qu'il ne soit compacté.
Document JSON plus grand
Voici un exemple avec un document JSON légèrement plus grand et embelli.
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_COMPACT(@json_document);
Résultat :
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Arguments nuls
Si l'argument est NULL
, le résultat est NULL
:
SELECT JSON_COMPACT(null);
Résultat :
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Nombre de paramètres incorrect
Ne fournir aucun argument génère une erreur :
SELECT JSON_COMPACT();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Nous obtenons le même résultat si nous fournissons trop d'arguments :
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'