I MariaDB, JSON_COMPACT()
är en inbyggd funktion som tar bort alla onödiga mellanslag från ett JSON-dokument, så att det blir så kort och kompakt som möjligt, och returnerar resultatet.
Detta kan vara praktiskt när du behöver lagra JSON-data i en databaskolumn och du inte vill att JSON-dokumenten ska ta upp mer utrymme än vad som är nödvändigt.
Använd JSON_DETAILED()
för att få motsatt effekt (dvs. för att försköna ett JSON-dokument genom att lägga till indrag och sprida det över flera rader). funktion.
Syntax
Syntaxen ser ut så här:
JSON_COMPACT(json_doc)
Där json_doc
är JSON-dokumentet.
Exempel
Här är ett exempel att visa.
SET @json_document = '{"a": [0, 1], "b": [2, 3]}';
SELECT
JSON_COMPACT(@json_document) AS Compact,
@json_document AS Original;
Resultat:
+-----------------------+----------------------------+ | Compact | Original | +-----------------------+----------------------------+ | {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} | +-----------------------+----------------------------+
I det här fallet innehåller den första kolumnen den komprimerade versionen och den andra kolumnen innehåller det ursprungliga JSON-dokumentet innan det komprimerades.
Större JSON-dokument
Här är ett exempel med ett lite större, snyggt JSON-dokument.
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);
Resultat:
{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}
Nollargument
Om argumentet är NULL
, resultatet är NULL
:
SELECT JSON_COMPACT(null);
Resultat:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Felaktig parameterräkning
Att inte tillhandahålla några argument resulterar i ett fel:
SELECT JSON_COMPACT();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Vi får samma resultat om vi ger för många argument:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'