En MariaDB, JSON_DETAILED()
es una función integrada que toma un documento JSON y lo devuelve en un formato más legible para los humanos.
Esto a veces se denomina embellecer el documento. Es similar a JSON_PRETTY()
de MySQL función.
Para el efecto contrario (es decir, para condensar un documento JSON), use JSON_COMPACT()
función.
Sintaxis
La sintaxis es así:
JSON_DETAILED(json_doc[, tab_size])
Donde json_doc
es el documento JSON y tab_size
es un valor opcional que especifica el tamaño de la tabulación/sangría.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';
SELECT JSON_DETAILED(@json_document);
Resultado:
+----------------------------------------+ | JSON_DETAILED(@json_document) | +----------------------------------------+ | { "name": "Wag", "type": "Dog", "weight": 20 } | +----------------------------------------+
El documento original está todo en una línea, sin tabulaciones/sangrías u otro formato.
El resultado se distribuye en varias líneas y contiene tabulaciones/sangrías, lo que hace que el documento sea más fácil de leer para los humanos.
Estructuras anidadas
Aquí hay un par de ejemplos más, esta vez con estructuras anidadas:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document);
Resultado:
+---------------------------------------+ | JSON_DETAILED(@json_document) | +---------------------------------------+ | { "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] } | +---------------------------------------+
Y otro:
SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';
SELECT JSON_DETAILED(@json_document);
Resultado:
+---------------------------------------+ | JSON_DETAILED(@json_document) | +---------------------------------------+ | { "_id": 2, "specs": { "height": 400, "weight": 15, "color": "brown" } } | +---------------------------------------+
Tamaño de pestaña
También tiene la opción de especificar el tamaño de la pestaña. Para hacer esto, pase el tamaño de pestaña deseado como segundo argumento.
Ejemplo
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 1);
Resultado:
{ "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] }
Y aquí está de nuevo, pero con un tamaño de pestaña más grande:
SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';
SELECT JSON_DETAILED(@json_document, 10);
Resultado:
{ "_id": 1, "awards": [ "Top Dog", "Best Dog", "Biggest Dog" ] }
Documento JSON más grande
Aquí hay un ejemplo con un documento JSON 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_DETAILED(@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" } } }
Argumento nulo
Si el argumento es NULL
, el resultado es NULL
:
SELECT JSON_DETAILED(null);
Resultado:
+---------------------+ | JSON_DETAILED(null) | +---------------------+ | NULL | +---------------------+
Recuento de parámetros incorrecto
No proporcionar argumentos da como resultado un error:
SELECT JSON_DETAILED();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'
Es lo mismo cuando proporciona demasiados argumentos:
SELECT JSON_DETAILED('{ "a": 1}', 1, 2);
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DETAILED'