In MariaDB, JSON_COMPACT()
è una funzione incorporata che rimuove tutti gli spazi non necessari da un documento JSON, in modo che sia il più breve e compatto possibile, e restituisce il risultato.
Questo può essere utile quando è necessario archiviare dati JSON in una colonna del database e non si desidera che i documenti JSON utilizzino più spazio del necessario.
Per l'effetto opposto (ovvero per abbellire un documento JSON aggiungendo rientri e distribuendolo su più righe), usa JSON_DETAILED()
funzione.
Sintassi
La sintassi è questa:
JSON_COMPACT(json_doc)
Dove json_doc
è il documento JSON.
Esempio
Ecco un esempio da dimostrare.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Risultato:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
In questo caso, la prima colonna contiene la versione compattata e la seconda colonna contiene il documento JSON originale prima che fosse compattato.
Documento JSON più grande
Ecco un esempio con un documento JSON leggermente più grande e grazioso.
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);
Risultato:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Argomenti nulli
Se l'argomento è NULL
, il risultato è NULL
:
SELECT JSON_COMPACT(null);
Risultato:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Conteggio parametri errato
Non fornire argomenti genera un errore:
SELECT JSON_COMPACT();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Otteniamo lo stesso risultato se forniamo troppi argomenti:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'