sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB JSON_LOOSE() explicado

En MariaDB, JSON_LOOSE() es una función integrada que agrega espacios a un documento JSON para que sea más legible.

Es similar al JSON_DETAILED() función, excepto que no enfatiza estructuras anidadas en la forma en que JSON_DETAILED() lo hace.

Para el efecto contrario (es decir, para eliminar espacios innecesarios), use JSON_COMPACT() función.

Sintaxis

La sintaxis es así:

JSON_LOOSE(json_doc)

Donde json_doc es el documento JSON.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SET @json = '{"name":"Wag","type":"Dog"}';

SELECT JSON_LOOSE(@json);

Resultado:

+--------------------------------+
| JSON_LOOSE(@json)              |
+--------------------------------+
| {"name": "Wag", "type": "Dog"} |
+--------------------------------+

El documento original no contiene espacios, sino el resultado de JSON_LOOSE() contiene espacios..

Aquí se compara de nuevo con el 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 y matrices

Aquí hay un ejemplo con un objeto y una matriz, solo para mostrar que no proporciona ningún formato adicional para tales estructuras.

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]} |
+----------------------------------------------------+

Si necesita un formato adicional para estas estructuras, pruebe JSON_DETAILED() función.

Argumento nulo

Si el argumento es NULL , el resultado es NULL :

SELECT JSON_LOOSE(null);

Resultado:

+------------------+
| JSON_LOOSE(null) |
+------------------+
| NULL             |
+------------------+

Recuento de parámetros incorrecto

No proporcionar argumentos da como resultado un error:

SELECT JSON_LOOSE();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'

Es lo mismo cuando proporciona demasiados argumentos:

SELECT JSON_LOOSE('{"a":1}', 2);

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'