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'