В MariaDB, JSON_COMPACT()
е вградена функция, която премахва всички ненужни интервали от JSON документ, така че да е възможно най-кратък и компактен, и връща резултата.
Това може да бъде удобно, когато трябва да съхранявате JSON данни в колона на база данни и не искате JSON документите да заемат повече място, отколкото е необходимо.
За обратния ефект (т.е. за преобразяване на JSON документ чрез добавяне на отстъпи и разпространението му върху няколко реда), използвайте JSON_DETAILED()
функция.
Синтаксис
Синтаксисът е така:
JSON_COMPACT(json_doc)
Където json_doc
е JSON документът.
Пример
Ето пример за демонстрация.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Резултат:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
В този случай първата колона съдържа уплътнената версия, а втората колона съдържа оригиналния JSON документ, преди да бъде уплътнен.
По-голям JSON документ
Ето пример с малко по-голям, претъпкан 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);
Резултат:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Нулеви аргументи
Ако аргументът е NULL
, резултатът е NULL
:
SELECT JSON_COMPACT(null);
Резултат:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Неправилен брой параметри
Предоставянето на без аргументи води до грешка:
SELECT JSON_COMPACT();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Получаваме същия резултат, ако предоставим твърде много аргументи:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'