I MariaDB, JSON_COMPACT()
er en indbygget funktion, der fjerner alle unødvendige mellemrum fra et JSON-dokument, så det bliver så kort og kompakt som muligt, og returnerer resultatet.
Dette kan være praktisk, når du skal gemme JSON-data i en databasekolonne, og du ikke ønsker, at JSON-dokumenterne skal bruge mere plads end nødvendigt.
For den modsatte effekt (dvs. at forskønne et JSON-dokument ved at tilføje indrykninger og sprede det over flere linjer), skal du bruge JSON_DETAILED()
funktion.
Syntaks
Syntaksen ser sådan ud:
JSON_COMPACT(json_doc)
Hvor json_doc
er JSON-dokumentet.
Eksempel
Her er et eksempel til at demonstrere.
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 dette tilfælde indeholder den første kolonne den komprimerede version, og den anden kolonne indeholder det originale JSON-dokument, før det blev komprimeret.
Større JSON-dokument
Her er et eksempel med et lidt større, smukt 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"}}}
Nul-argumenter
Hvis argumentet er NULL
, resultatet er NULL
:
SELECT JSON_COMPACT(null);
Resultat:
+--------------------+ | JSON_COMPACT(null) | +--------------------+ | NULL | +--------------------+
Forkert parameterantal
Angivelse af ingen argumenter resulterer i en fejl:
SELECT JSON_COMPACT();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'
Vi får det samme resultat, hvis vi giver for mange argumenter:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'