No MariaDB,
JSON_LOOSE()
é uma função interna que adiciona espaços a um documento JSON para torná-lo mais legível. É semelhante ao
JSON_DETAILED()
função, exceto que ela não enfatiza estruturas aninhadas da maneira que JSON_DETAILED()
faz. Para o efeito oposto (ou seja, para remover espaços desnecessários), use o
JSON_COMPACT()
função. Sintaxe
A sintaxe fica assim:
JSON_LOOSE(json_doc)
Onde
json_doc
é o documento JSON. Exemplo
Aqui está um exemplo para demonstrar.
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT JSON_LOOSE(@json);
Resultado:
+--------------------------------+ | JSON_LOOSE(@json) | +--------------------------------+ | {"name": "Wag", "type": "Dog"} | +--------------------------------+
O documento original não contém espaços, mas o resultado de
JSON_LOOSE()
contém espaços.. Aqui é novamente comparado com o documento original:
SET @json = '{"name":"Wag","type":"Dog"}';
SELECT
@json AS 'Original',
JSON_LOOSE(@json) AS 'Modified';
Resultado:
+-----------------------------+--------------------------------+ | Original | Modified | +-----------------------------+--------------------------------+ | {"name":"Wag","type":"Dog"} | {"name": "Wag", "type": "Dog"} | +-----------------------------+--------------------------------+
Objetos e matrizes
Aqui está um exemplo com um objeto e um array, apenas para mostrar que ele não fornece nenhuma formatação extra para tais estruturas.
SET @json = '{"specs":{"w":10,"h":30},"scores":[1,2,3]}';
SELECT JSON_LOOSE(@json);
Resultado:
+----------------------------------------------------+ | JSON_LOOSE(@json) | +----------------------------------------------------+ | {"specs": {"w": 10, "h": 30}, "scores": [1, 2, 3]} | +----------------------------------------------------+
Se você precisar de formatação extra para essas estruturas, tente o
JSON_DETAILED()
função. Argumento nulo
Se o argumento for
NULL
, o resultado é NULL
:SELECT JSON_LOOSE(null);
Resultado:
+------------------+ | JSON_LOOSE(null) | +------------------+ | NULL | +------------------+
Contagem de parâmetros incorreta
Não fornecer argumentos resulta em um erro:
SELECT JSON_LOOSE();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'
É o mesmo quando você fornece muitos argumentos:
SELECT JSON_LOOSE('{"a":1}', 2);
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'