En MariaDB, JSON_COMPACT()
es una función integrada que elimina todos los espacios innecesarios de un documento JSON, para que sea lo más breve y compacto posible, y devuelve el resultado.
Esto puede ser útil cuando necesita almacenar datos JSON en una columna de base de datos y no desea que los documentos JSON utilicen más espacio del necesario.
Para el efecto contrario (es decir, embellecer un documento JSON agregando sangrías y distribuyéndolo en varias líneas), use JSON_DETAILED()
función.
Sintaxis
La sintaxis es así:
JSON_COMPACT(json_doc)
Donde json_doc
es el documento JSON.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
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]} | +-----------------------+----------------------------+
En este caso, la primera columna contiene la versión compactada y la segunda columna contiene el documento JSON original antes de que se compactara.
Documento JSON más grande
Aquí hay un ejemplo con un documento JSON embellecido un poco más grande.
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
Si el argumento es NULL
, el resultado es NULL
:
SELECT JSON_COMPACT(null);
Resultado:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Recuento de parámetros incorrecto
No proporcionar argumentos da como resultado un error:
SELECT JSON_COMPACT();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Obtenemos el mismo resultado si proporcionamos demasiados argumentos:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'