W MariaDB, JSON_COMPACT()
to wbudowana funkcja, która usuwa wszystkie niepotrzebne spacje z dokumentu JSON, aby był jak najkrótszy i zwarty, i zwraca wynik.
Może to być przydatne, gdy musisz przechowywać dane JSON w kolumnie bazy danych i nie chcesz, aby dokumenty JSON zajmowały więcej miejsca niż to konieczne.
Aby uzyskać efekt odwrotny (tj. upiększyć dokument JSON przez dodanie wcięć i rozłożenie go na wiele wierszy), użyj JSON_DETAILED()
funkcja.
Składnia
Składnia wygląda tak:
JSON_COMPACT(json_doc)
Gdzie json_doc
jest dokumentem JSON.
Przykład
Oto przykład do zademonstrowania.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Wynik:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
W takim przypadku pierwsza kolumna zawiera skompaktowaną wersję, a druga kolumna zawiera oryginalny dokument JSON przed jego skompaktowaniem.
Większy dokument JSON
Oto przykład z nieco większym, upiększonym 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);
Wynik:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Argumenty zerowe
Jeśli argument to NULL
, wynik to NULL
:
SELECT JSON_COMPACT(null);
Wynik:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Nieprawidłowa liczba parametrów
Brak argumentów skutkuje błędem:
SELECT JSON_COMPACT();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Ten sam wynik otrzymujemy, jeśli podamy zbyt wiele argumentów:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'