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'