V MariaDB, JSON_COMPACT()
je vestavěná funkce, která odstraní všechny zbytečné mezery z dokumentu JSON, aby byl co nejkratší a nejkompaktnější, a vrátí výsledek.
To se může hodit, když potřebujete uložit data JSON do databázového sloupce a nechcete, aby dokumenty JSON zabíraly více místa, než je nutné.
Pro opačný efekt (tj. pro úpravu dokumentu JSON přidáním odsazení a jeho rozložením na více řádků) použijte JSON_DETAILED()
funkce.
Syntaxe
Syntaxe vypadá takto:
JSON_COMPACT(json_doc)
Kde json_doc
je dokument JSON.
Příklad
Zde je příklad k demonstraci.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Výsledek:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
V tomto případě první sloupec obsahuje zkomprimovanou verzi a druhý sloupec obsahuje původní dokument JSON před zkomprimováním.
Větší dokument JSON
Zde je příklad s mírně větším, upraveným dokumentem JSON.
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);
Výsledek:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Nulové argumenty
Pokud je argument NULL
, výsledkem je NULL
:
SELECT JSON_COMPACT(null);
Výsledek:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Nesprávný počet parametrů
Pokud neposkytnete žádné argumenty, dojde k chybě:
SELECT JSON_COMPACT();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Stejného výsledku dosáhneme, pokud poskytneme příliš mnoho argumentů:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'