No MariaDB,
JSON_COMPACT()
é uma função interna que remove todos os espaços desnecessários de um documento JSON, para que seja o mais curto e compacto possível, e retorna o resultado. Isso pode ser útil quando você precisa armazenar dados JSON em uma coluna de banco de dados e não deseja que os documentos JSON ocupem mais espaço do que o necessário.
Para o efeito oposto (ou seja, para embelezar um documento JSON adicionando recuos e espalhando-o por várias linhas), use o
JSON_DETAILED()
função. Sintaxe
A sintaxe fica assim:
JSON_COMPACT(json_doc)
Onde
json_doc
é o documento JSON. Exemplo
Aqui está um exemplo para demonstrar.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Resultado:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
Nesse caso, a primeira coluna contém a versão compactada e a segunda coluna contém o documento JSON original antes de ser compactado.
Documento JSON maior
Aqui está um exemplo com um documento JSON um pouco maior e embelezado.
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);
Resultado:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Argumentos nulos
Se o argumento for
NULL
, o resultado é NULL
:SELECT JSON_COMPACT(null);
Resultado:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Contagem de parâmetros incorreta
Não fornecer argumentos resulta em um erro:
SELECT JSON_COMPACT();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Obtemos o mesmo resultado se fornecermos muitos argumentos:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'