MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB JSON_LOOSE() explicado


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'